Заменить нечетный элемент каждой строки матрицы нулем - Pascal
Формулировка задачи:
Дан двумерный массив размером n*m, заполненный случайным образом.
1. Заменить нечетный элемент каждой строки нулем
2. Вставить после всех строк, содержащий минимальные значения строку 1,2 ,3
3. Удалить все столбцы, в которых первый элемент четный
4. Поменять местами первый и последний столбцы.
Решение задачи: «Заменить нечетный элемент каждой строки матрицы нулем»
textual
Листинг программы
- {$MODE TP}
- type
- TLine = Array[Byte] Of ShortInt;
- TArray = Array[Byte] Of TLine;
- procedure PrintArray(const a: TArray; const n, m: Byte);
- var
- i, j: Byte;
- begin
- for i := 0 to n - 1 do
- begin
- WriteLn;
- for j := 0 to m - 1 do
- Write(a[i, j]:4);
- end;
- WriteLn;
- end;
- procedure GenerateArray(var a: TArray; var n, m: Byte);
- var
- i, j: Byte;
- begin
- repeat
- Write('n='); ReadLn(n);
- until (n > 0);
- repeat
- Write('m='); ReadLn(m);
- until (m > 0);
- Randomize();
- for i := 0 to n - 1 do
- for j := 0 to m - 1 do
- a[i, j] := Random(199) - 99;
- PrintArray(a, n, m);
- end;
- procedure Zad1(var a: TArray; const n, m: Byte);
- var
- i, j: Byte;
- begin
- for i := 0 to n - 1 do
- for j := 0 to m - 1 do
- a[i, j] := a[i, j] * Ord(Not Odd(a[i, j]));
- PrintArray(a, n, m);
- end;
- procedure Zad2(var a: TArray; var n: Byte; const m: Byte);
- function GetMin(const a: TArray; const n, m: Byte): ShortInt;
- var
- Result: ShortInt;
- i, j: Byte;
- begin
- Result := a[0, 0];
- for i := 0 to n - 1 do
- for j := 0 to m - 1 do
- if (a[i, j] < Result)
- then
- Result := a[i, j];
- GetMin := Result;
- end;
- function CheckLine(const l: TLine; const m: Byte; const min: ShortInt): Boolean;
- var
- j: Byte;
- Result: Boolean;
- begin
- Result := False; j := 0;
- while ((j < m) And (Not Result)) do
- begin
- Result := (l[j] = min);
- Inc(j);
- end;
- CheckLine := Result;
- end;
- var
- i, ii, j: Byte;
- min: ShortInt;
- begin
- min := GetMin(a, n, m); i := 0;
- while (i < n) do
- begin
- if (CheckLine(a[i], m, min))
- then
- begin
- for ii := n - 1 downto i + 1 do
- a[ii + 1] := a[ii];
- for j := 0 to m - 1 do
- a[i + 1, j] := j + 1;
- Inc(n);
- Inc(i);
- end;
- Inc(i);
- end;
- PrintArray(a, n, m);
- end;
- procedure Zad3(var a: TArray; const n: Byte; var m: Byte);
- var
- i, j, jj: Byte;
- begin
- j := 0;
- while (j < m) do
- if (a[0, j] = 0)
- then
- begin
- for jj := j to m - 2 do
- for i := 0 to n - 1 do
- a[i, jj] := a[i, jj + 1];
- Dec(m);
- end
- else
- Inc(j);
- PrintArray(a, n, m);
- end;
- procedure Zad4(var a: TArray; const n, m: Byte);
- procedure SwapElements(var x, y: ShortInt);
- var
- z: ShortInt;
- begin
- z := x;
- x := y;
- y := z;
- end;
- var
- i: Byte;
- begin
- if (m > 1)
- then
- for i := 0 to n - 1 do
- SwapElements(a[i, 0], a[i, m - 1]);
- PrintArray(a, n, m);
- end;
- var
- ar: TArray;
- n, m: Byte;
- begin
- GenerateArray(ar, n, m);
- Zad1(ar, n, m);
- Zad2(ar, n, m);
- Zad3(ar, n, m);
- Zad4(ar, n, m);
- end.
Объяснение кода листинга программы
- Объявление типов данных:
- TLine: массив байтов (ShortInt)
- TArray: массив байтов, состоящий из TLine
- Процедура вывода массива:
- PrintArray(const a: TArray, const n, m: Byte): выводит значения массива a размером n x m
- Процедура генерации массива:
- GenerateArray(var a: TArray, var n, m: Byte): запрашивает у пользователя размеры массива n и m, инициализирует массив случайными числами и выводит его на экран
- Процедура для задачи 1:
- Zad1(var a: TArray; const n, m: Byte): заменяет нечетные элементы каждой строки массива a нулями и выводит результат
- Процедура для задачи 2:
- Zad2(var a: TArray; var n: Byte; const m: Byte): ищет минимальный элемент в массиве a, затем перемещает все строки, содержащие этот минимальный элемент, вниз и добавляет новую строку со значениями от 1 до m, если это необходимо, и выводит результат
- Процедура для задачи 3:
- Zad3(var a: TArray; const n: Byte; var m: Byte): удаляет столбцы, содержащие хотя бы один ноль, из массива a и выводит результат
- Процедура для задачи 4:
- Zad4(var a: TArray; const n, m: Byte): меняет местами первый и последний элементы каждой строки массива a и выводит результат
- Основная часть программы:
- Инициализирует массив ar, n и m
- Генерирует массив и выводит его
- Последовательно вызывает процедуры для решения задач 1-4, передавая массив ar, n и m в каждую из них.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д