Заменить максимальный элемент каждой строки матрицы нулем - 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:
- Поменять местами значения второго и предпоследнего столбца в каждой строке;
- Вывод конечного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д