Отыскать в матрице с помощью функции максимальный элемент - Turbo Pascal
Формулировка задачи:
Задана квадратная матрица из n*n целых чисел.Отыскать в матрице с помощью функции максимальный элемент. С помощью процедуры обеспечить удаление строки и столбца, на пересечении которых был найден этот элемент. Вывести исходную матрицу и результат преобразования.Помогите пожалуйста в коде поставить функцию и процедуру.
Листинг программы
- uses crt;
- var a:array[1..100,1..100] of integer;
- i,j:byte;
- maxi,maxj:byte;
- n,m:byte;
- begin
- writeln('Введите размер матрицы');
- readln(n);
- m:=n;
- randomize;
- maxi:=1;
- maxj:=1;
- writeln('-----------------------------------------');
- for i:=1 to n do begin
- for j:=1 to n do begin
- a[i,j]:=random(100);
- write(a[i,j]:3);
- if a[i,j]>a[maxi,maxj] then
- begin
- maxi:=i;maxj:=j;
- end;
- end;
- writeln;
- end;
- writeln('------------------------------------------');
- for i:=maxi to n do
- for j:=1 to n do a[i,j]:=a[i+1,j];
- for j:=maxj to n do
- for i:=1 to n do a[i,j]:=a[i,j+1];
- for i:=1 to n-1 do begin
- for j:=1 to n-1 do begin
- write(a[i,j]:3);
- end;
- writeln;
- end;
- end.
Решение задачи: «Отыскать в матрице с помощью функции максимальный элемент»
textual
Листинг программы
- uses crt;
- type mtr=array[1..10,1..10] of integer;
- function max(a:mtr;n:byte;var maxi,maxj:byte):integer;
- var i,j:byte;
- begin
- maxi:=1;
- maxj:=1;
- for i:=1 to n do
- for j:=1 to n do
- if a[i,j]>a[maxi,maxj] then
- begin
- maxi:=i;
- maxj:=j;
- end;
- max:=a[maxi,maxj];
- end;
- procedure del(var a:mtr;n,maxi,maxj:byte; var m:byte);
- var i,j:byte;
- begin
- m:=n;
- if maxi=n then m:=m-1
- else
- begin
- for i:=maxi to n-1 do
- for j:=1 to n do
- a[i,j]:=a[i+1,j];
- m:=m-1;
- end;
- if maxj=n then n:=m
- else
- begin
- for j:=maxj to n-1 do
- for i:=1 to m do
- a[i,j]:=a[i,j+1];
- n:=m;
- end;
- end;
- procedure print(a:mtr;n:byte;s:string);
- var i,j:byte;
- begin
- writeln(s);
- for i:=1 to n do
- begin
- for j:=1 to n do
- write(a[i,j]:3);
- writeln;
- end;
- end;
- var a:mtr;
- n,m,i,j,maxi,maxj:byte;
- mx:integer;
- begin
- repeat
- write('Введите размер матрицы от 2 до 10 n=');
- readln(n);
- until n in [2..10];
- randomize;
- for i:=1 to n do
- for j:=1 to n do
- a[i,j]:=random(100);
- print(a,n,'Исходная матрица');
- mx:=max(a,n,maxi,maxj);
- writeln('Максимальный элемент=',mx,' в строке ',maxi,' столбце ',maxj);
- del(a,n,maxi,maxj,m);
- print(a,m,'Удаление строки и столбца');
- end.
Объяснение кода листинга программы
- Создаётся тип данных mtr, который представляет собой матрицу целых чисел размером от 1 до 10 на 10.
- Определяется функция max, которая принимает матрицу, её размер и два указателя на максимальные элементы. Она выполняет поиск максимального элемента в матрице и возвращает его значение.
- Определяется процедура del, которая удаляет строку и столбец из матрицы.
- Определяется процедура print, которая выводит исходную матрицу, максимальный элемент и результат удаления строки и столбца.
- Создаётся переменная a типа mtr и заполняется случайными числами от 0 до 99.
- Выполняется цикл, в котором пользователь вводит размер матрицы от 2 до 10.
- Выполняется генерация случайной матрицы.
- Выводится исходная матрица.
- Вычисляется максимальный элемент с помощью функции max.
- Выводится максимальный элемент и его позиция.
- Выполняется удаление строки и столбца.
- Выводится результат удаления.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д