IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача(Вычисление произведения элементов массива)
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


Помогите пожалуйста с задачей.....
Решить:
1) С использованием подпрограммы-функции
2)С использованием подпрограммы-процедуры


Исходные данные вводятся с клавиатуры и с использованием генератора случайных чисел.Выбор способа получения исходных данных осуществляется с использованием меню после запуска программы на выполнение.

Задача(Вычисление произведения элементов массива) :

Заданы массивы а={A1 , ... , An} , b={B1 , ... , Bm} и числа n и m.
Определить

n
П Ai , при А1>B1;
i=1

m
П Bi ,при A1<B1;
i=1

k
П (Ai+Bi) , при A1=B1 и k=min{n,m}.
i=1


(это все что написано выше система, т.е. C={и три строчки,которые вы видите выше)................
Помогите, пожалуйста. Заранее спасибо!!!!!


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +



p := 1;
if a[1]>b[1] then
for i := 1 to n do p := p*a[i]
else if a[1]<b[1] then
for i := 1 to m do p := p*b[i]
else begin
k := n;
if m<k then k :=m;
for i := 1 to k do p := p*(a[i]+b[i]);
end;



с помощью процедуры думаю сможешь сдеалть сам.


Цитата
сможешь сдеалть сам.

klem4, ОНА девушка! :rose:



Сообщение отредактировано: Altair -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


я сделала эту задачу методом функции...........наконец-то как говорится........но методом процедуры у меня не получается..........у меня вообще туго с процедурой.......ПОМОГИТЕ пожалуйста, у меня в понедельник зачет........... !help.gif !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


1) Меняешь function на procedure
2) Добавляешь в параметры передаваемые процедуре var переменную в которую будешь записывать результатб который возвращала бы функция

пример

function Max(a,b : integer) : integer;
begin
Max := a;
if b > Max then Max := b;
end;

// то же самое процедурой

procedure Max(a,b : integer; var M : integter);
begin
M := a;
if b > M then M := b;
end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


..............спасибо........ wub.gif .............я постараюсь сделать..........


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


ПОМОГИТЕ ПОЖАЛУЙСТА!!!!!!!!!!!

Я постаралась и попробовала сделать эту задачу методом процедур, но комп выдает какие-то ошибки, исправьте, пожалуйста.........Мне очень нужно, эта задача последняя, а последний раз сдачи зачета в четверг....................
ПОЖАЛУЙСТА.........
решение ниже..........




Код


uses
  Sysutils;

const
   n=7;
   m=5;
type
   a = array[1..n] of integer;
   b = array[1..m] of integer;
procedure Input(var m1 : a; m2 : b);
var
   i : byte;
begin
   for i := 1 to n do  begin

       write('m[',i,']=');
       readln(m1[i]);
    end;
   writeln;
begin
for i := 1 to m do  begin

       write('m[',i,']=');
       readln(m2[i]);
    end;
   writeln;
end; end;


procedure InputRnd(var m1 : a; m2 : b);
const rnd = 100;
var
   i: byte;
begin
   randomize;
   for i := 1 to n do

     m1[i] := random(rnd);
     randomize;
     for i:=1 to m do
     m2[i] := random(rnd);
     writeln('Ishodniy massiv');
      end;


procedure Print(m1 : a; m2 : b);
var
   i : byte;
begin
   for i := 1 to n do begin
      writeln;
      write(m1[i]:3,'  ');
   end;
   writeln;
   readln;
   for i := 1 to m do begin
      writeln;
      write(m2[i]:3,'  ');
   end;
   writeln;
   readln;
end;

procedure Reform(var m1 : a; m2 : b);
var
   i,j : byte;
   p,k:integer;
begin
   p:=1;
   if m1[1]>m2[1] then
   for i:=1 to n do p:=p*m1[i]
   else if m1[1]<m2[1] then
   for j:=1 to m do p:=p*m2[i]
   else begin
   k:=n;
   if m<k then k:=m;
   for i:=1 to k do p:=p*(m1[i]+m2[i]);
   end;
   writeln('Sdelano. Podtverdit i vivesti...');
   readln;
end;

var
   m1 : a;
   m2 : b;
   p:integer;
   z : byte;

begin

   repeat

      writeln('1 - Input ');
      writeln('2 - Input RND');
      writeln('3 - Print');
      writeln('4 - Reform');
      writeln('5 - Quit');

      readln(z);

      case z of
       1 : Input(m1, m2);
       2 : InputRnd(m1, m2);
       3 : Print(m1, m2);
       4 : Reform(p);
     end;
   until z=5;

end.


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Переписываешь Reform так:
procedure Reform(m1 : a; m2 : b; var p: integer);
var
i,j : byte;
k:integer;
begin
p:=1;
if m1[1]>m2[1] then
for i:=1 to n do p:=p*m1[i]
else if m1[1]<m2[1] then
for j:=1 to m do p:=p*m2[i]
else begin
k:=n;
if m<k then k:=m;
for i:=1 to k do p:=p*(m1[i]+m2[i]);
end;
writeln('Sdelano. Podtverdit i vivesti...');
readln;
end;

и вызываешь так:
      case z of
1 : Input(m1, m2);
2 : InputRnd(m1, m2);
3 : Print(m1, m2);
4 : Reform(m1, m2, p); { <--- Вот так !!! }
end;


В остальном проблем быть не должно, компиляцию программа проходит...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


Да, она запускается..........и все бы ничего, но почему-то второй массив m2 выводится всегда состоящий только из нулей, а после Reform при нажатии Print должно выводится значение произведения 'p' но оно не выводится, вместо него только массив m1 и весь из нулей m2.......
Помогите, в чем ошибка?


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
а после Reform при нажатии Print должно выводится значение произведения 'p' но оно не выводится
Ха... Молодец. То есть ДО Reform процедура Print должна выводить одно, а ПОСЛЕ - другое? Ну, так ты ж должна была это объяснить... Покажи мне, ГДЕ ты это объясняла выше? Телепатов ждешь? Ну, жди...

Вопросы задавать не научишься - будешь все время получать "некорректные" с твоей точки зрения ответы...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






P.S. Чтобы матрица M2 не была нулевой:
procedure Input(var m1 : a; VAR m2 : b);
...
procedure InputRnd(var m1 : a; VAR m2 : b);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


Цитата
Ха... Молодец. То есть ДО Reform процедура Print должна выводить одно, а ПОСЛЕ - другое? Ну, так ты ж должна была это объяснить... Покажи мне, ГДЕ ты это объясняла выше? Телепатов ждешь? Ну, жди...



ну я поняла........извини.....Я подумала, что было очевидно: нужно найти 'p' и мы делаем это в Reform, значит после Reform Print должен выводить именно 'p'.........
Так что я должна исправить, чтобы было именно так, а не иначе?.........можешь подсказать?


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


dry.gif ..............хм-хм....................полный игнор...................будто я спрашиваю какие-то космические вещи.............................


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.05.2024 12:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name