Упорядочить матрицу по убыванию элементов первой строки - Free Pascal

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

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

Дан двумерный массив, содержащий 3 строки и 5 столбцов. Элементы массива являются произвольные числа Нужно упорядочить массив по убыванию элементов первой строки. Вот не могу понять что в моей программе не так? Преподаватель попросила найти ещё максимум я нашёл, но программа не хочет упорядочивать первую строку массива. помогите пожалуйста.
Листинг программы
  1. Program Maxim68; //Ященко М.Ю.
  2. uses crt,interface1;
  3. const n=3;m=5;
  4. type mas=array[1..n,1..m] of integer;
  5. var u:real;
  6. i,j:word;
  7. a,f:mas;
  8. p:boolean;
  9. procedure vvod(var x:mas);
  10. begin
  11. for i:=1 to n do begin
  12. for j:= 1 to m do x[i,j]:=20-random(40);
  13. end;
  14. end;
  15. procedure vevod(x:mas);
  16. begin
  17. for i:=1 to n do begin
  18. for j:= 1 to m do write(x[i,j]:9);
  19. writeln;
  20. end;
  21. end;
  22. procedure obrabotka(x:mas; var y:mas);
  23. var z,max,k,h:integer;
  24. begin
  25. for i:= 1 to m do begin
  26. max:=x[1,i];
  27. h:=i;
  28. for j:= i to n do if x[1,j]>max then begin
  29. max:=x[1,j];
  30. h:=j;
  31. end;
  32. for k:=1 to n do begin
  33. z:=x[k,i];
  34. x[k,i]:=x[k,h];
  35. x[k,h]:=z;
  36. end;
  37. end;
  38. y:=x;
  39.  
  40. end;
  41. Begin
  42. shapka(6,8);
  43. clrscr;
  44. randomize;
  45. vvod(a);
  46. writeln('Дан двумерный массив, содержащий 3 строки и 5 столбцов. Элементами массива являются произвольные числа. Упорядочить массив по убыванию элементов первой строки. ');
  47. writeln();
  48. writeln('Массив А: ');
  49. vevod(a);
  50. writeln;
  51. pravoeokno;
  52. obrabotka(a,f);
  53. writeln('Полученный массив имеет вид: ');
  54. vevod(f);
  55. vivod;
  56. readkey;
  57. End.
interface1 это мой модуль вот он
Листинг программы
  1. unit interface1;
  2. interface
  3. uses crt;
  4. procedure shapka(x,y:word);
  5. procedure pravoeokno;
  6. procedure vivod;
  7. function factorial(k:word):longint;
  8. function tg(z:real):real;
  9. implementation
  10. procedure shapka(x,y:word);
  11. begin
  12. textbackground(7);clrscr;
  13. window(75,3,100,5); textbackground(4); clrscr;
  14. textcolor(15);
  15. writeln('Лабораторная работа №',x);
  16. writeln(' Задача №',y);
  17. window(4,6,65,36);
  18. textbackground(11); clrscr;
  19. end;
  20. procedure pravoeokno;
  21. begin
  22. window(115,6,175,36); textbackground(6); clrscr;textcolor(15);
  23. end;
  24. procedure vivod;
  25. begin
  26. window(75,48,100,50); textcolor(14); textbackground(13); clrscr;
  27. writeln(' Работу выполнил');
  28. writeln(' Ященко Максим Юрьевич');
  29. end;
  30. function factorial(k:word):longint;
  31. var pr:word; i:longint;
  32. begin
  33. pr:=1;
  34. for i:=1to k do begin
  35. pr:=pr*i;
  36. factorial:=pr;
  37. end;
  38. end;
  39. function tg(z:real):real;
  40. var a:real;
  41. begin
  42. a:=sin(z)/cos(z);
  43. tg:=a;
  44. end;
  45. Begin
  46. End.

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

textual
Листинг программы
  1. procedure SwapInt(var a, b: Integer);
  2. var t: Integer;
  3. begin
  4.   t:=a; a:=b; b:=t;
  5. end;
  6. procedure obrabotka(var a: mas);
  7. var i, j, k, p: Integer;
  8. begin
  9.   p:=m;
  10.   repeat
  11.     k:=p; p:=0;
  12.     for j:=1 to k-1 do
  13.       if a[1,j+1]>a[1,j] then begin
  14.         p:=j; for i:=1 to n do SwapInt(a[i,j],a[i,j+1]);
  15.       end;
  16.   until p=0;
  17. end;
  18. function Max(const a: mas): Integer;
  19. var i, j: Integer;
  20. begin
  21.   Result:=a[1,1];
  22.   for i:=1 to n do for j:=1 to m do
  23.     if Result<a[i,j] then Result:=a[i,j];
  24. end;

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

  1. Указаны процедуры для обмена значениями двух переменных (SwapInt) и для сортировки матрицы по убыванию элементов первой строки (obrabotka).
  2. В процедуре obrabotka используется цикл repeat-until для поиска наибольшего элемента в первой строке.
  3. Если найден больший элемент, то с помощью цикла for и процедуры SwapInt происходит обмен элементов в соответствующих позициях матрицы.
  4. Цикл while продолжается до тех пор, пока не будет найден элемент, который больше всех остальных в первой строке.
  5. Функция Max находит максимальное значение в матрице и возвращает его в качестве результата.
  6. Для этого используется два вложенных цикла for, которые перебирают все элементы матрицы.
  7. Если текущий элемент больше максимального значения, то он становится новым максимальным значением.
  8. В конце функции Max возвращается найденное максимальное значение.

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


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

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

6   голосов , оценка 4.5 из 5

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

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

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