Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент - Turbo Pascal

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

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

Ребятки всем привет. Помогите пожалуйста,я конечно новенький на форуме,и не очень соображаю в паскале а тут вообще затруднение. Буду развиваться. Дана целочисленная прямоугольная матрица. 1. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент. 2. Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.

Решение задачи: «Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент»

textual
Листинг программы
  1. type
  2.     TLine = Array[Byte] Of Integer;
  3.     TArray = Array[Byte] Of TLine;
  4. procedure PrintArray(const ar: TArray; const n, m: Byte);
  5. var
  6.     i, j: Byte;
  7. begin
  8.     for i := 0 to n - 1 do
  9.     begin
  10.         for j := 0 to m - 1 do
  11.             Write(ar[i, j]:4);
  12.         WriteLn;
  13.     end;
  14.     WriteLn;
  15. end;
  16. procedure GenerateArray(var ar: TArray; var n, m: Byte);
  17. var
  18.     i, j: Byte;
  19. begin
  20.     repeat
  21.         Write('Input n (>0)=');
  22.         ReadLn(n);
  23.     until (n > 0);
  24.     repeat
  25.         Write('Input m (>0)=');
  26.         ReadLn(m);
  27.     until (m > 0);
  28.     for i := 0 to n - 1 do
  29.         for j := 0 to m - 1 do
  30.             ar[i, j] := Random(199) - 99;
  31.     PrintArray(ar, n, m);
  32. end;
  33. function FindColumnWithZero(const ar: TArray; const n, m: Byte): Integer;
  34. var
  35.     Result: Integer; //удалить строку при ошибке повторного объявления
  36.     i, j: Byte;
  37. begin
  38.     Result := -1;
  39.     j := 0; i := 0;
  40.     while ((j < m) And (Result = -1)) do
  41.     begin
  42.         while ((i < n) And (Result = -1)) do
  43.         begin
  44.             if (ar[i, j] = 0)
  45.             then
  46.                 Result := j
  47.             else
  48.                 Inc(i);
  49.         end;
  50.         Inc(j);
  51.     end;
  52.     FindColumnWithZero := Result;
  53. end;
  54. function SumNegative(const l: TLine; const m: Byte): Integer;
  55. var
  56.     Result: Integer; //удалить строку при ошибке повторного объявления
  57.     j: Byte;
  58. begin
  59.     Result := 0;
  60.     for j := 0 to m - 1 do
  61.         if (l[j] < 0)
  62.         then
  63.             Inc(Result, l[j]);
  64.     SumNegative := Result;
  65. end;
  66. procedure Sort(var ar: TArray; const n, m: Byte);
  67. var
  68.     i, j: Byte;
  69.     sums: TLine;
  70.     procedure SwapLines(var x, y: TLine; var xx, yy: Integer);
  71.     var
  72.         z: TLine;
  73.         zz: Integer;
  74.     begin
  75.         z := x; zz := xx;
  76.         x := y; xx := yy;
  77.         y := z; yy := zz;
  78.     end;
  79. begin
  80.     for i := 0 to n - 1 do
  81.         sums[i] := SumNegative(ar[i], m);
  82.     for i := 0 to n - 2 do
  83.         for j := i + 1 to n - 1 do
  84.             if (sums[i] < sums[j])
  85.             then
  86.                 SwapLines(ar[i], ar[j], sums[i], sums[j]);
  87.     PrintArray(ar, n, m);
  88. end;
  89. var
  90.     ar: TArray;
  91.     n, m: Byte;
  92.     ans: Integer;
  93. begin
  94.     Randomize();
  95.     GenerateArray(ar, n, m);
  96.     ans := FindColumnWithZero(ar, n, m);
  97.     if (ans <> -1)
  98.     then
  99.         WriteLn('First column with zero: ', ans)
  100.     else
  101.         WriteLn('No one zero element!');
  102.     Sort(ar, n, m);
  103. end.

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

Этот код написан на Turbo Pascal и решает задачу определения номера первого столбца, содержащего хотя бы один нулевой элемент в массиве. Вот список действий, представленный в виде циклов и функций:

  1. В функции GenerateArray создается массив ar, заполненный случайными числами от 0 до 99. Затем вызывается функция PrintArray, которая печатает содержимое массива.
  2. Функция FindColumnWithZero ищет первый столбец с хотя бы одним нулевым элементом. Она возвращает номер этого столбца, если такой столбец найден, и -1, если нет.
  3. Функция SumNegative суммирует все отрицательные элементы в заданном столбце.
  4. В функции Sort вызывается функция SwapLines, которая меняет местами элементы двух строк. Затем массив ar сортируется по возрастанию.
  5. В основной части кода сначала генерируется случайный массив, затем находится первый столбец с хотя бы одним нулевым элементом, затем этот столбец сортируется, и наконец выводится результат.

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


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

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

14   голосов , оценка 4.214 из 5

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

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

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