Заменить максимальный элемент каждой строки матрицы нулем - Pascal
Формулировка задачи:
Дан двумерный массив размером n*m, заполненный случайным образом.
1. Заменить максимальный элемент каждой строки нулем
2. Вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей.
3. Удалить самый левый столбец, в котором встретиться четный отрицательный элемент.
4. Поменять местами второй и предпоследний столбцы.
Решение задачи: «Заменить максимальный элемент каждой строки матрицы нулем»
textual
Листинг программы
- var
- ar: Array[Byte, Byte] Of ShortInt;
- i, j, k, n, m, jMax: Byte;
- temp: ShortInt;
- flag: Boolean;
- begin
- repeat
- Write('n(1..128)=');
- ReadLn(n);
- until (n in [1..128]);
- repeat
- Write('m=');
- ReadLn(m);
- until (m > 0);
- Randomize; WriteLn('Original array:');
- for i := 0 to n - 1 do
- begin
- jMax := 0;
- for j := 0 to m - 1 do
- begin
- ar[i, j] := Random(199) - 99;
- Write(ar[i, j]:4);
- if (ar[i, j] > ar[i, jMax])
- then
- jMax := j;
- end;
- ar[i, jMax] := 0;
- WriteLn;
- end;
- WriteLn('Task 1:');
- for i := 0 to n - 1 do
- begin
- for j := 0 to m - 1 do
- Write(ar[i, j]:4);
- WriteLn;
- end;
- i := 0;
- while (i < n) do
- begin
- if (ar[i, 0] mod 3 = 0)
- then
- begin
- for k := n downto i + 1 do
- for j := 0 to m - 1 do
- ar[k, j] := ar[k - 1, j];
- Inc(n);
- for j := 0 to m - 1 do
- ar[i, j] := 0;
- Inc(i);
- end;
- Inc(i);
- end;
- WriteLn('Task 2:');
- for i := 0 to n - 1 do
- begin
- for j := 0 to m - 1 do
- Write(ar[i, j]:4);
- WriteLn;
- end;
- j := 0; flag := False;
- while ((j < m) And (Not flag)) do
- begin
- i := 0;
- while ((i < n) And (Not flag)) do
- begin
- flag := (ar[i, j] < 0) And (Not Odd(ar[i, j]));
- Inc(i);
- end;
- Inc(j);
- end;
- if flag
- then
- begin
- for k := j - 1 to m - 2 do
- for i := 0 to n - 1 do
- ar[i, k] := ar[i, k + 1];
- Dec(m);
- end;
- WriteLn('Task 3:');
- for i := 0 to n - 1 do
- begin
- for j := 0 to m - 1 do
- Write(ar[i, j]:4);
- WriteLn;
- end;
- if (m > 1)
- then
- for i := 0 to n - 1 do
- begin
- temp := ar[i, 1];
- ar[i, 1] := ar[i, m - 2];
- ar[i, m - 2] := temp;
- end;
- WriteLn('Task 4:');
- for i := 0 to n - 1 do
- begin
- for j := 0 to m - 1 do
- Write(ar[i, j]:4);
- WriteLn;
- end;
- end.
Объяснение кода листинга программы
- Объявление переменных:
ar
: двумерный массив байтов, используется для хранения данных;i, j, k, n, m, jMax
: переменные для итерации и хранения чисел;temp
: переменная для временного хранения значения элемента массива;flag
: логическая переменная для проверки условий.
- Ввод размеров массива:
- Цикл повторяется, пока пользователь не введет корректное значение для
n
(количество строк) от 1 до 128; - Цикл повторяется, пока пользователь не введет корректное значение для
m
(количество столбцов), большее 0.
- Цикл повторяется, пока пользователь не введет корректное значение для
- Заполнение массива случайными числами и замена максимального элемента в каждой строке на 0:
- Заполнение массива
ar
случайными числами от -99 до 99; - Определение максимального элемента в каждой строке и замена его на 0.
- Заполнение массива
- Вывод исходного массива.
- Задача 1:
- Вывод измененного массива после замены максимальных элементов на 0.
- Задача 2:
- Перемещение строк с числами, делящимися на 3 без остатка, вниз и вставка нулей вверху;
- Вывод измененного массива.
- Задача 3:
- Удаление столбцов, содержащих отрицательные и четные числа;
- Вывод измененного массива.
- Задача 4:
- Поменять местами значения второго и предпоследнего столбца в каждой строке;
- Вывод конечного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д