Вот такая задача вот....помогите плиз сделать очень срочно нужно....
Даны массивы а(10), в (4), с (7).В каждом массиве заменить минимальный элемент произведением элементов соответственного массива. Элементы каждого массива можно брать любые. В скобках это кол-во эл-ов в каждом массиве.
Пожалуйста помогите!!!!!!
мисс_граффити
25.11.2007 16:17
за один проход находишь произведение и адрес минимального эл-та. потом заменяешь... с чем проблемы? что пробовал делать?
ginga
25.11.2007 16:32
Цитата(мисс_граффити @ 25.11.2007 12:17)
за один проход находишь произведение и адрес минимального эл-та. потом заменяешь... с чем проблемы? что пробовал делать?
произведение нахожу и минимальные элементы!а вот как заменить и потом вывести массив с заменнёнными элементами не получается....((((
Добавлено через 2 мин. вот что у меня пока что получилось....а что с этим делать дальше не понимаю((((
[quote]
Program massivi; const n=10; m=7; l=-2; var a: array [1..n] of integer; b: array [4..m] of integer; c: array [-9..l] of integer; i, p, min : integer; begin for i:= 1 to n do readln(a[i]); p:= a[1]; min := a[1]; for i:= 1 to n do begin p:=p*(a[i]); if a[i]<min then min := a[i] begin min:=p; end end; for i:= 1 to n do readln(b[i]); p:= b[4]; min := b[4]; for i:= 4 to m do begin p:=p*(b[i]); if b[i]<min then min := b[i] begin min:=p; end end; for i:= 1 to n do readln(c[i]); p:=0; min := c[-9]; for i:= -9 to n do begin p:=p*(c[i]); if c[i]<min then min := c[i] begin min:=p; end end;
мисс_граффити
25.11.2007 16:58
тебе надо запоминать не сам минимальный элемент, а его индекс.
if b[i]<b[min] then min:=i; ... b[min]:=p;
сделай нормальные отступы - так читать программу невозможно, какой begin к чему относится - совершенно неясно.
ginga
25.11.2007 18:07
ну вот чуток потделал как ты сказала.....подредоктировал код....возможно что то и не правлильно(((( просмотри плиз!и по возможности подскажи что дальше нужно сделать(((
Program massivi; const n=10; m=7; l=-2; var a: array [1..n] of integer; b: array [4..m] of integer; c: array [-9..l] of integer; i, p, min : integer; begin for i:= 1 to n do readln(a[i]); p:= a[1]; min := a[1]; for i:= 1 to n do begin p:=p*(a[i]); if a[i]<a[min] then min := i; a[min]:=p; end;
for i:= 1 to n do readln(b[i]); p:= b[4]; min := b[4]; for i:= 4 to m do begin p:=p*(b[i]); if b[i]<b[min] then min := i; b[min]:=p; end;
for i:= 1 to n do readln(c[i]); p:=0; min := c[-9]; for i:= -9 to n do begin p:=p*(c[i]); if c[i]<c[min] then min := i; c[min]:=p; end;
мисс_граффити
25.11.2007 18:14
я ж говорю - сделай нормальные отступы! лесенкой, по уровням... для примера:
for i:= -9 to n do begin p:=p*(c[i]); if c[i]<c[min] then min := i; c[min]:=p; end;
почему до n, кстати? до 1 вроде... и если ты делаешь сначала p:=0, то произведение всегда будет равно 0. а если делаешь p:= b[4]; то на b[4] умножится 2 раза
ginga
25.11.2007 18:33
Вот вроде поменял всё как ты говорила!что дальше????((((((
Program massivi; const n=10; m=7; l=-2; var a: array [1..n] of integer; b: array [4..m] of integer; c: array [-9..l] of integer; i, p, min : integer; begin for i:= 1 to n do readln(a[i]); p:=1; min := a[1]; for i:= 1 to n do begin p:=p*(a[i]); if a[i]<a[min] then min := i; a[min]:=p; end;
for i:= 1 to m do readln(b[i]); p:= 1; min := b[4]; for i:= 4 to m do begin p:=p*(b[i]); if b[i]<b[min] then min := i; b[min]:=p; end;
for i:= 1 to l do readln(c[i]); p:=1; min := c[-9]; for i:= -9 to n do begin p:=p*(c[i]); if c[i]<c[min] then min := i; c[min]:=p; end; end;
мисс_граффити
25.11.2007 18:49
ну по порядку: в массиве а
for i:= 1 to n do readln(a[i]); p:=1; min := 1; //мы же договорились запоминать индексы! for i:= 1 to n do begin p:=p*(a[i]); if a[i]<a[min] then min := i; end; a[min]:=p; //вот это надо вынести за пределы цикла! а то ерунда получится
в массиве b (с отступами здесь хуже...):
for i:= 4 to m do readln(b[i]); //почему от 1 до m? от 4... p:= 1; min := 4; //!!! for i:= 4 to m do begin //вот здесь уползла строчка p:=p*(b[i]); if b[i]<b[min] then min := i; end; b[min]:=p; //опять же - выносим
ну и с массивом с- те же ошибки
ginga
25.11.2007 19:04
ну вот что я тут намудрил опять!посмотри пожалуйста(((
Program massivi; const n=10; m=7; l=-2; var a: array [1..n] of integer; b: array [4..m] of integer; c: array [-9..l] of integer; i, p, min : integer; begin for i:= 1 to n do readln(a[i]); p:=1; min := 1; for i:= 1 to n do begin p:=p*(a[i]); if a[i]<a[min] then min := i; end; a[min]:=p;
for i:= 4 to m do readln(b[i]); p:= 1; min := 4; for i:= 4 to m do begin p:=p*(b[i]); if b[i]<b[min] then min := i; end; b[min]:=p;
for i:= -9 to l do readln(c[i]); p:=1; min := -9; for i:= -9 to n do begin p:=p*(c[i]); if c[i]<c[min] then min := i; end; c[min]:=p; end;
мисс_граффити
25.11.2007 20:15
здесь до 1, а не до n а так - похоже на правду
for i:= -9 to n do
ginga
25.11.2007 20:28
ясно!спасибо!!!!а как дальше сделать чтоб массивы в конце уже с заменёнными элементами выводились на экран?
мисс_граффити
25.11.2007 21:11
так же, как ввод только вместо readln надо использовать writeln это все выведется в столбик а можно write, а потом, когда кончится массив, делать writeln (без параметров). тогда каждый массив будет на своей строке
ginga
25.11.2007 21:36
спасиб большое)))))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.