Получить массив из номеров максимальных элементов строк матрицы - Pascal ABC

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

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

Здравствуйте! Помогите, пожалуйста с задачей. Получить одномерный массив, состоящий из номеров максимальных элементов соответствующих строк матрицы. В полученном векторе решить задачу поиска 'количества четных элементов; Отсортировать в матрице строки по убыванию значений элементов в столбце с номером, заданным пользователем.
Листинг программы
  1. function evenmas(var b:mas; n:integer):integer; //кол-во чётных
  2. var
  3. k:integer;
  4. i:integer;
  5. begin
  6. i:=1;
  7. k:=0;
  8. while (i<=n) do begin
  9. if ((b[i] mod 2 = 0) and (b[i]<>0))then begin
  10. k:=k+1;
  11. i:=i+1;
  12. end
  13. else begin i:=i+1; end
  14. end;
  15. Writeln(k);
  16. end;
  17. function maxnumber(var a:matr; n,m,i:integer):integer; //поиск макс.номера
  18. var
  19. j:integer;
  20. max,imax:integer;
  21. begin
  22. max:=0;
  23. for i:=1 to n do begin
  24. max:=a[i,1];
  25. imax:=1;
  26. for j:=1 to m do begin
  27. if a[i,j] > max then
  28. max:=a[i,j];
  29. imax := j;
  30. maxnumber:=imax;
  31. end;
  32. end;
  33. end;
  34.  
  35. procedure inputmas(var B: mas; A: matr; m, n: integer); //вставка его в массив
  36. var
  37. i: integer;
  38. begin
  39. for i := 1 to n do
  40. b[i] := maxnumber(a,n,m,i);
  41. end;

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

textual
Листинг программы
  1. type
  2.     TLine = Array Of ShortInt;
  3.     TArray = Array Of TLine;
  4.  
  5. procedure PrintLine(const l: TLine);
  6. var
  7.     j: Byte;
  8. begin
  9.     for j := 0 to Length(l) - 1 do
  10.         Write(l[j]:4);
  11.     WriteLn;
  12. end;
  13.  
  14. procedure PrintArray(const ar: TArray);
  15. var
  16.     i, j: Byte;
  17. begin
  18.     for i := 0 to Length(ar) - 1 do
  19.         PrintLine(ar[i]);
  20. end;
  21.  
  22. procedure InitArray(var ar: TArray);
  23. var
  24.     i, j, n, m: Byte;
  25. begin
  26.     Write('n='); ReadLn(n);
  27.     Write('m='); ReadLn(m);
  28.     SetLength(ar, n, m);
  29.     for i := 0 to Length(ar) - 1 do
  30.         for j := 0 to Length(ar[i]) - 1 do
  31.             ar[i, j] := Random(199) - 99;
  32.     PrintArray(ar);
  33. end;
  34.  
  35. function LineMaxId(const l: TLine): Byte;
  36. var
  37.     Result, j: Byte;
  38. begin
  39.     Result := 0;
  40.     for j := 1 to Length(l) - 1 do
  41.         if (l[j] > l[Result])
  42.         then
  43.             Result := j;
  44.     LineMaxId := Result;
  45. end;
  46.  
  47. procedure GetMaxs(const ar: TArray; var maxs: TLine);
  48. var
  49.     i: Byte;
  50. begin
  51.     SetLength(maxs, Length(ar));
  52.     for i := 0 to Length(ar) - 1 do
  53.         maxs[i] := LineMaxId(ar[i]) + 1;
  54.     PrintLine(maxs);
  55. end;
  56.  
  57. function HowMuchEvens(const l: TLine): Byte;
  58. var
  59.     Result, i: Byte;
  60. begin
  61.     Result := 0;
  62.     for i := 0 to Length(l) - 1 do
  63.         if (Not Odd(l[i]))
  64.         then
  65.             Inc(Result);
  66.     HowMuchEvens := Result;
  67. end;
  68.  
  69. procedure SwapLines(var x, y: TLine);
  70. var
  71.     z: TLine;
  72. begin
  73.     z := x;
  74.     x := y;
  75.     y := z;
  76. end;
  77.  
  78. procedure SortByColumn(var ar: TArray; const j: Byte);
  79. var
  80.     i, k: Byte;
  81. begin
  82.     for i := 0 to Length(ar) - 1 do
  83.         for k := i to Length(ar) - 2 do
  84.             if (ar[k, j] < ar[k + 1, j])
  85.             then
  86.                 SwapLines(ar[k], ar[k + 1]);
  87.     PrintArray(ar);
  88. end;
  89. var
  90.     ar: TArray;
  91.     max: TLine;
  92.     column: Byte;
  93. begin
  94.     InitArray(ar);
  95.     Write('Max ids: '); GetMaxs(ar, max);
  96.     WriteLn('Evens in max id: ', HowMuchEvens(max));
  97.     Write('Input column: '); ReadLn(column);
  98.     SortByColumn(ar, column - 1);
  99. end.

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

  1. В функции InitArray создается массив ar с n строками и m столбцами.
  2. Заполняются строки массива случайными числами от 0 до 198.
  3. Вызывается функция LineMaxId для каждой строки массива ar, и возвращается номер строки с максимальным значением.
  4. В функции GetMaxs создается новый массив maxs той же длины, что и ar, и заполняется номерами строк, которые содержат максимальные значения.
  5. Выводится массив maxs.
  6. В функции HowMuchEvens подсчитывается количество четных строк в массиве ar.
  7. Выводится количество четных строк.
  8. В функции SwapLines меняются местами две строки x и y.
  9. В функции SortByColumn сортируется массив ar по столбцу, указанному в переменной column.
  10. Выводится отсортированный массив ar.

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


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

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

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

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

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

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