В каждой строке заменить знак максимального по модулю элемента на противоположный - Pascal
Формулировка задачи:
Дан двумерный массив целых чисел a из n строк и m столбцов. Требуется в каждой строке заменить знак максимального по модулю элемента на противоположный. Если таких элементов несколько, требуется изменить все.
Решение задачи: «В каждой строке заменить знак максимального по модулю элемента на противоположный»
textual
Листинг программы
var
a: Array[Byte, Byte] Of ShortInt;
i, j, n, m, jMax: Byte;
max: ShortInt;
begin
Randomize;
repeat
Write('n(>0)='); ReadLn(n);
until (n > 0);
repeat
Write('m(>0)='); ReadLn(m);
until (m > 0);
WriteLn('Original array:');
for i := 0 to n - 1 do
begin
jMax := 0;
for j := 0 to m - 1 do
begin
a[i, j] := Random(199) - 99;
Write(a[i, j]:4);
if (Abs(a[i, j]) > Abs(a[i, jMax]))
then
jMax := j;
end;
WriteLn;
max := Abs(a[i, jMax]);
for j := 0 to m - 1 do
if (Abs(a[i, j]) = max)
then
a[i, j] := -a[i, j];
end;
WriteLn('Modified array:');
for i := 0 to n - 1 do
begin
for j := 0 to m - 1 do
Write(a[i, j]:4);
WriteLn;
end;
end.
Объяснение кода листинга программы
- Объявление переменных:
a- двумерный массив с элементами типа ShortInti- переменная типа Byte для использования в циклахj- переменная типа Byte для использования в циклахn- переменная типа Byte для хранения количества строк в массивеm- переменная типа Byte для хранения количества столбцов в массивеjMax- переменная типа Byte для хранения индекса максимального элемента в строкеmax- переменная типа ShortInt для хранения максимального по модулю элемента в строке
- Генерация случайных значений для массива:
- Цикл, в котором пользователю предлагается ввести значение
n, повторяется до тех пор, покаnне будет больше 0. - Цикл, в котором пользователю предлагается ввести значение
m, повторяется до тех пор, покаmне будет больше 0. - Генерируются случайные значения для элементов массива
a[i, j]и выводятся на экран.
- Цикл, в котором пользователю предлагается ввести значение
- Поиск максимального элемента в строке:
- Для каждой строки определяется индекс максимального по модулю элемента и сохраняется в переменной
jMax.
- Для каждой строки определяется индекс максимального по модулю элемента и сохраняется в переменной
- Замена знака максимального по модулю элемента на противоположный:
- Выбирается максимальный по модулю элемент в строке сохраненный в переменной
max. - Для каждого элемента в строке, если значение по модулю равно
max, то знак этого элемента меняется на противоположный путем умножения на-1.
- Выбирается максимальный по модулю элемент в строке сохраненный в переменной
- Вывод измененного массива:
- Измененный массив выводится на экран.
- Конец программы.