Заменить нечетный элемент каждой строки матрицы нулем - Pascal

Узнай цену своей работы

Формулировка задачи:

Дан двумерный массив размером n*m, заполненный случайным образом. 1. Заменить нечетный элемент каждой строки нулем 2. Вставить после всех строк, содержащий минимальные значения строку 1,2 ,3 3. Удалить все столбцы, в которых первый элемент четный 4. Поменять местами первый и последний столбцы.

Решение задачи: «Заменить нечетный элемент каждой строки матрицы нулем»

textual
Листинг программы
  1. {$MODE TP}
  2. type
  3.     TLine = Array[Byte] Of ShortInt;
  4.     TArray = Array[Byte] Of TLine;
  5. procedure PrintArray(const a: TArray; const n, m: Byte);
  6. var
  7.     i, j: Byte;
  8. begin
  9.     for i := 0 to n - 1 do
  10.     begin
  11.         WriteLn;
  12.         for j := 0 to m - 1 do
  13.             Write(a[i, j]:4);
  14.     end;
  15.     WriteLn;
  16. end;
  17. procedure GenerateArray(var a: TArray; var n, m: Byte);
  18. var
  19.     i, j: Byte;
  20. begin
  21.     repeat
  22.         Write('n='); ReadLn(n);
  23.     until (n > 0);
  24.     repeat
  25.         Write('m='); ReadLn(m);
  26.     until (m > 0);
  27.     Randomize();
  28.     for i := 0 to n - 1 do
  29.         for j := 0 to m - 1 do
  30.             a[i, j] := Random(199) - 99;
  31.     PrintArray(a, n, m);
  32. end;
  33. procedure Zad1(var a: TArray; const n, m: Byte);
  34. var
  35.     i, j: Byte;
  36. begin
  37.     for i := 0 to n - 1 do
  38.         for j := 0 to m - 1 do
  39.             a[i, j] := a[i, j] * Ord(Not Odd(a[i, j]));
  40.     PrintArray(a, n, m);
  41. end;
  42. procedure Zad2(var a: TArray; var n: Byte; const m: Byte);
  43.     function GetMin(const a: TArray; const n, m: Byte): ShortInt;
  44.     var
  45.         Result: ShortInt;
  46.         i, j: Byte;
  47.     begin
  48.         Result := a[0, 0];
  49.         for i := 0 to n - 1 do
  50.             for j := 0 to m - 1 do
  51.                 if (a[i, j] < Result)
  52.                 then
  53.                     Result := a[i, j];
  54.         GetMin := Result;
  55.     end;
  56.     function CheckLine(const l: TLine; const m: Byte; const min: ShortInt): Boolean;
  57.     var
  58.         j: Byte;
  59.         Result: Boolean;
  60.     begin
  61.         Result := False; j := 0;
  62.         while ((j < m) And (Not Result)) do
  63.         begin
  64.             Result := (l[j] = min);
  65.             Inc(j);
  66.         end;
  67.         CheckLine := Result;
  68.     end;
  69. var
  70.     i, ii, j: Byte;
  71.     min: ShortInt;
  72. begin
  73.     min := GetMin(a, n, m); i := 0;
  74.     while (i < n) do
  75.     begin
  76.         if (CheckLine(a[i], m, min))
  77.         then
  78.         begin
  79.             for ii := n - 1 downto i + 1 do
  80.                 a[ii + 1] := a[ii];
  81.             for j := 0 to m - 1 do
  82.                 a[i + 1, j] := j + 1;
  83.             Inc(n);
  84.             Inc(i);
  85.         end;
  86.         Inc(i);
  87.     end;
  88.     PrintArray(a, n, m);   
  89. end;
  90. procedure Zad3(var a: TArray; const n: Byte; var m: Byte);
  91. var
  92.     i, j, jj: Byte;
  93. begin
  94.     j := 0;
  95.     while (j < m) do
  96.         if (a[0, j] = 0)
  97.         then
  98.         begin
  99.             for jj := j to m - 2 do
  100.                 for i := 0 to n - 1 do
  101.                     a[i, jj] := a[i, jj + 1];
  102.             Dec(m);
  103.         end
  104.         else
  105.             Inc(j);
  106.     PrintArray(a, n, m);
  107. end;
  108. procedure Zad4(var a: TArray; const n, m: Byte);
  109. procedure SwapElements(var x, y: ShortInt);
  110. var
  111.     z: ShortInt;
  112. begin
  113.     z := x;
  114.     x := y;
  115.     y := z;
  116. end;
  117. var
  118.     i: Byte;
  119. begin
  120.     if (m > 1)
  121.     then
  122.         for i := 0 to n - 1 do
  123.             SwapElements(a[i, 0], a[i, m - 1]);
  124.     PrintArray(a, n, m);
  125. end;
  126. var
  127.     ar: TArray;
  128.     n, m: Byte;
  129. begin
  130.     GenerateArray(ar, n, m);
  131.     Zad1(ar, n, m);
  132.     Zad2(ar, n, m);
  133.     Zad3(ar, n, m);
  134.     Zad4(ar, n, m);
  135. end.

Объяснение кода листинга программы

  1. Объявление типов данных:
    • TLine: массив байтов (ShortInt)
    • TArray: массив байтов, состоящий из TLine
  2. Процедура вывода массива:
    • PrintArray(const a: TArray, const n, m: Byte): выводит значения массива a размером n x m
  3. Процедура генерации массива:
    • GenerateArray(var a: TArray, var n, m: Byte): запрашивает у пользователя размеры массива n и m, инициализирует массив случайными числами и выводит его на экран
  4. Процедура для задачи 1:
    • Zad1(var a: TArray; const n, m: Byte): заменяет нечетные элементы каждой строки массива a нулями и выводит результат
  5. Процедура для задачи 2:
    • Zad2(var a: TArray; var n: Byte; const m: Byte): ищет минимальный элемент в массиве a, затем перемещает все строки, содержащие этот минимальный элемент, вниз и добавляет новую строку со значениями от 1 до m, если это необходимо, и выводит результат
  6. Процедура для задачи 3:
    • Zad3(var a: TArray; const n: Byte; var m: Byte): удаляет столбцы, содержащие хотя бы один ноль, из массива a и выводит результат
  7. Процедура для задачи 4:
    • Zad4(var a: TArray; const n, m: Byte): меняет местами первый и последний элементы каждой строки массива a и выводит результат
  8. Основная часть программы:
    • Инициализирует массив ar, n и m
    • Генерирует массив и выводит его
    • Последовательно вызывает процедуры для решения задач 1-4, передавая массив ar, n и m в каждую из них.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы