Отыскать в матрице с помощью функции максимальный элемент - Turbo Pascal

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

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

Задана квадратная матрица из n*n целых чисел.Отыскать в матрице с помощью функции максимальный элемент. С помощью процедуры обеспечить удаление строки и столбца, на пересечении которых был найден этот элемент. Вывести исходную матрицу и результат преобразования.Помогите пожалуйста в коде поставить функцию и процедуру.
Листинг программы
  1. uses crt;
  2. var a:array[1..100,1..100] of integer;
  3. i,j:byte;
  4. maxi,maxj:byte;
  5. n,m:byte;
  6. begin
  7. writeln('Введите размер матрицы');
  8. readln(n);
  9. m:=n;
  10. randomize;
  11. maxi:=1;
  12. maxj:=1;
  13. writeln('-----------------------------------------');
  14. for i:=1 to n do begin
  15. for j:=1 to n do begin
  16. a[i,j]:=random(100);
  17. write(a[i,j]:3);
  18. if a[i,j]>a[maxi,maxj] then
  19. begin
  20. maxi:=i;maxj:=j;
  21. end;
  22. end;
  23. writeln;
  24. end;
  25. writeln('------------------------------------------');
  26. for i:=maxi to n do
  27. for j:=1 to n do a[i,j]:=a[i+1,j];
  28. for j:=maxj to n do
  29. for i:=1 to n do a[i,j]:=a[i,j+1];
  30. for i:=1 to n-1 do begin
  31. for j:=1 to n-1 do begin
  32. write(a[i,j]:3);
  33. end;
  34. writeln;
  35. end;
  36. end.

Решение задачи: «Отыскать в матрице с помощью функции максимальный элемент»

textual
Листинг программы
  1. uses crt;
  2. type mtr=array[1..10,1..10] of integer;
  3. function max(a:mtr;n:byte;var maxi,maxj:byte):integer;
  4. var i,j:byte;
  5. begin
  6. maxi:=1;
  7. maxj:=1;
  8. for i:=1 to n do
  9. for j:=1 to n do
  10. if a[i,j]>a[maxi,maxj] then
  11.  begin
  12.   maxi:=i;
  13.   maxj:=j;
  14.  end;
  15. max:=a[maxi,maxj];
  16. end;
  17. procedure del(var a:mtr;n,maxi,maxj:byte; var m:byte);
  18. var i,j:byte;
  19. begin
  20. m:=n;
  21. if maxi=n then m:=m-1
  22. else
  23.  begin
  24.   for i:=maxi to n-1 do
  25.   for j:=1 to n do
  26.   a[i,j]:=a[i+1,j];
  27.   m:=m-1;
  28.  end;
  29. if maxj=n then n:=m
  30. else
  31.  begin
  32.   for j:=maxj to n-1 do
  33.   for i:=1 to m do
  34.   a[i,j]:=a[i,j+1];
  35.   n:=m;
  36.  end;
  37. end;
  38. procedure print(a:mtr;n:byte;s:string);
  39. var i,j:byte;
  40. begin
  41. writeln(s);
  42. for i:=1 to n do
  43.  begin
  44.   for j:=1 to n do
  45.   write(a[i,j]:3);
  46.   writeln;
  47.  end;
  48. end;
  49. var a:mtr;
  50.     n,m,i,j,maxi,maxj:byte;
  51.     mx:integer;
  52. begin
  53. repeat
  54. write('Введите размер матрицы от 2 до 10 n=');
  55. readln(n);
  56. until n in [2..10];
  57. randomize;
  58. for i:=1 to n do
  59. for j:=1 to n do
  60. a[i,j]:=random(100);
  61. print(a,n,'Исходная матрица');
  62. mx:=max(a,n,maxi,maxj);
  63. writeln('Максимальный элемент=',mx,' в строке ',maxi,' столбце ',maxj);
  64. del(a,n,maxi,maxj,m);
  65. print(a,m,'Удаление строки и столбца');
  66. end.

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

  1. Создаётся тип данных mtr, который представляет собой матрицу целых чисел размером от 1 до 10 на 10.
  2. Определяется функция max, которая принимает матрицу, её размер и два указателя на максимальные элементы. Она выполняет поиск максимального элемента в матрице и возвращает его значение.
  3. Определяется процедура del, которая удаляет строку и столбец из матрицы.
  4. Определяется процедура print, которая выводит исходную матрицу, максимальный элемент и результат удаления строки и столбца.
  5. Создаётся переменная a типа mtr и заполняется случайными числами от 0 до 99.
  6. Выполняется цикл, в котором пользователь вводит размер матрицы от 2 до 10.
  7. Выполняется генерация случайной матрицы.
  8. Выводится исходная матрица.
  9. Вычисляется максимальный элемент с помощью функции max.
  10. Выводится максимальный элемент и его позиция.
  11. Выполняется удаление строки и столбца.
  12. Выводится результат удаления.

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


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

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

7   голосов , оценка 4.143 из 5

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

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

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