Паскаль Как написать программу, которая уменьшала бы ВСЕ максимальные элементы в два раза? Так? max:=a[1,1]; if a[i,j] больше max then max:= a[i,j]; end; max:= max div 2; Просто в данном случае, уменьшает только один максимал...

Паскаль Как написать программу, которая уменьшала бы ВСЕ максимальные элементы в два раза? Так? max:=a[1,1]; if a[i,j] > max then max:= a[i,j]; end; max:= max div 2; Просто в данном случае, уменьшает только один максимальный элемент и то не всегда выдает правильный ответ.(делю квадратную матрицу 2*2 с элементами: 2 4 6 8 выводит max=2)
Гость
Ответ(ы) на вопрос:
Гость
Судя по всему вы понимаете, поэтому подсказки будет достаточно. Немного не так. Вы не сдвигаете элемента массива. Вам нужен отдельные циклы для увеличения i и j. Тогда программа будет сама переходить к нужному элементу массива на каждой итерации.
Гость
const m=4; n=5; var  a:array[1..m,1..n] of real; i,j:integer; max:real; begin Randomize; writeln('Исходный массив:'); for i:=1 to m do  begin  for j:=1 to n do   begin    a[i,j]:=random(10);    write(a[i,j]:5:1);   end;   writeln;  end; max:=a[1,1]; for i:=1 to m do  for j:=1 to n do   if a[i,j]>max then max:=a[i,j]; writeln('max = ',max); for i:=1 to m do  for j:=1 to n do   if a[i,j]=max then a[i,j]:=a[i,j]/2; writeln('Полученный массив:'); for i:=1 to m do  begin  for j:=1 to n do write(a[i,j]:5:1);  writeln;  end; end. Пример: Исходный массив:   1.0  9.0  1.0  9.0  8.0   4.0  4.0  5.0  9.0  9.0   6.0  3.0  6.0  0.0  6.0   6.0  7.0  3.0  6.0  9.0 max = 9 Полученный массив:   1.0  4.5  1.0  4.5  8.0   4.0  4.0  5.0  4.5  4.5   6.0  3.0  6.0  0.0  6.0   6.0  7.0  3.0  6.0  4.5
Не нашли ответ?
Ответить на вопрос
Похожие вопросы