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