Упорядочить матрицу по убыванию элементов первой строки - Free Pascal
Формулировка задачи:
Дан двумерный массив, содержащий 3 строки и 5 столбцов. Элементы массива являются произвольные числа
Нужно упорядочить массив по убыванию элементов первой строки. Вот не могу понять что в моей программе не так? Преподаватель попросила найти ещё максимум я нашёл, но программа не хочет упорядочивать первую строку массива. помогите пожалуйста.
interface1 это мой модуль вот он
Листинг программы
- Program Maxim68; //Ященко М.Ю.
- uses crt,interface1;
- const n=3;m=5;
- type mas=array[1..n,1..m] of integer;
- var u:real;
- i,j:word;
- a,f:mas;
- p:boolean;
- procedure vvod(var x:mas);
- begin
- for i:=1 to n do begin
- for j:= 1 to m do x[i,j]:=20-random(40);
- end;
- end;
- procedure vevod(x:mas);
- begin
- for i:=1 to n do begin
- for j:= 1 to m do write(x[i,j]:9);
- writeln;
- end;
- end;
- procedure obrabotka(x:mas; var y:mas);
- var z,max,k,h:integer;
- begin
- for i:= 1 to m do begin
- max:=x[1,i];
- h:=i;
- for j:= i to n do if x[1,j]>max then begin
- max:=x[1,j];
- h:=j;
- end;
- for k:=1 to n do begin
- z:=x[k,i];
- x[k,i]:=x[k,h];
- x[k,h]:=z;
- end;
- end;
- y:=x;
- end;
- Begin
- shapka(6,8);
- clrscr;
- randomize;
- vvod(a);
- writeln('Дан двумерный массив, содержащий 3 строки и 5 столбцов. Элементами массива являются произвольные числа. Упорядочить массив по убыванию элементов первой строки. ');
- writeln();
- writeln('Массив А: ');
- vevod(a);
- writeln;
- pravoeokno;
- obrabotka(a,f);
- writeln('Полученный массив имеет вид: ');
- vevod(f);
- vivod;
- readkey;
- End.
Листинг программы
- unit interface1;
- interface
- uses crt;
- procedure shapka(x,y:word);
- procedure pravoeokno;
- procedure vivod;
- function factorial(k:word):longint;
- function tg(z:real):real;
- implementation
- procedure shapka(x,y:word);
- begin
- textbackground(7);clrscr;
- window(75,3,100,5); textbackground(4); clrscr;
- textcolor(15);
- writeln('Лабораторная работа №',x);
- writeln(' Задача №',y);
- window(4,6,65,36);
- textbackground(11); clrscr;
- end;
- procedure pravoeokno;
- begin
- window(115,6,175,36); textbackground(6); clrscr;textcolor(15);
- end;
- procedure vivod;
- begin
- window(75,48,100,50); textcolor(14); textbackground(13); clrscr;
- writeln(' Работу выполнил');
- writeln(' Ященко Максим Юрьевич');
- end;
- function factorial(k:word):longint;
- var pr:word; i:longint;
- begin
- pr:=1;
- for i:=1to k do begin
- pr:=pr*i;
- factorial:=pr;
- end;
- end;
- function tg(z:real):real;
- var a:real;
- begin
- a:=sin(z)/cos(z);
- tg:=a;
- end;
- Begin
- End.
Решение задачи: «Упорядочить матрицу по убыванию элементов первой строки»
textual
Листинг программы
- procedure SwapInt(var a, b: Integer);
- var t: Integer;
- begin
- t:=a; a:=b; b:=t;
- end;
- procedure obrabotka(var a: mas);
- var i, j, k, p: Integer;
- begin
- p:=m;
- repeat
- k:=p; p:=0;
- for j:=1 to k-1 do
- if a[1,j+1]>a[1,j] then begin
- p:=j; for i:=1 to n do SwapInt(a[i,j],a[i,j+1]);
- end;
- until p=0;
- end;
- function Max(const a: mas): Integer;
- var i, j: Integer;
- begin
- Result:=a[1,1];
- for i:=1 to n do for j:=1 to m do
- if Result<a[i,j] then Result:=a[i,j];
- end;
Объяснение кода листинга программы
- Указаны процедуры для обмена значениями двух переменных (SwapInt) и для сортировки матрицы по убыванию элементов первой строки (obrabotka).
- В процедуре obrabotka используется цикл repeat-until для поиска наибольшего элемента в первой строке.
- Если найден больший элемент, то с помощью цикла for и процедуры SwapInt происходит обмен элементов в соответствующих позициях матрицы.
- Цикл while продолжается до тех пор, пока не будет найден элемент, который больше всех остальных в первой строке.
- Функция Max находит максимальное значение в матрице и возвращает его в качестве результата.
- Для этого используется два вложенных цикла for, которые перебирают все элементы матрицы.
- Если текущий элемент больше максимального значения, то он становится новым максимальным значением.
- В конце функции Max возвращается найденное максимальное значение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д