• Паскаль
    Как написать программу, которая уменьшала бы ВСЕ максимальные элементы в два раза?

    Так?

    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)

Ответы 3

  • У вас первый элемент хранит в себе значение 2 и дальше него программа не видит.
    • Автор:

      dear6cx8
    • 6 лет назад
    • 0
  • Судя по всему вы понимаете, поэтому подсказки будет достаточно. Немного не так. Вы не сдвигаете элемента массива. Вам нужен отдельные циклы для увеличения i и j. Тогда программа будет сама переходить к нужному элементу массива на каждой итерации.
  • const m=4; n=5;var a:array[1..m,1..n] of real;i,j:integer; max:real;beginRandomize;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.0max = 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
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years