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

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

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

Дана целочисленная матрица размера M x N. 1) Найти элемент, являющийся максимальным в свое строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести об этом сообщение. 2) Строки упорядочить по возрастанию. Исходную матрицу сформировать с помощью генератора случайных чисел.

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

textual
Листинг программы
  1. const M = 10;
  2. const N = 5;
  3.  
  4. type item_t = integer;
  5. type line_t = array[1..M] of item_t;
  6. type tabl_t = array[1..N] of line_t;
  7.  
  8. procedure printLine( const l: line_t );
  9. var
  10.   i: integer;
  11. begin
  12.   for i:= 1 to M do
  13.     write(l[i] :5);
  14.   writeln;  
  15. end;
  16. procedure printTabl( const t: tabl_t );
  17. var
  18.   i: integer;
  19. begin
  20.   for i:= 1 to N do
  21.     printLine(t[i]);
  22. end;
  23.  
  24. procedure sortLine( var l: line_t; tS: boolean );
  25. var
  26.   i,j: integer;
  27.   tmp: item_t;
  28. begin
  29.   if ts then
  30.     for i:=1 to M-1 do
  31.       for j:=M downto i do begin
  32.         if l[j] < l[i] then begin
  33.           tmp := l[j];
  34.           l[j] := l[i];
  35.           l[i] := tmp;      
  36.         end;        
  37.       end
  38.   else
  39.     for i:=1 to M-1 do
  40.       for j:=M downto i do begin
  41.         if l[j] > l[i] then begin
  42.           tmp := l[j];
  43.           l[j] := l[i];
  44.           l[i] := tmp;      
  45.         end;        
  46.       end;
  47. end;
  48.  
  49. const DEV_FRB_EL_NEED = false;
  50.  
  51. var
  52.   a: tabl_t;
  53.   x,y,x2,y2: integer;
  54.   min, max, eCount: integer;
  55.   fBreak : boolean;
  56. begin
  57.   repeat
  58.     for y:=1 to N do
  59.       for x:=1 to M do
  60.         a[y][x] := random(-100 , 100);
  61.    
  62.    
  63.     eCount := 0;
  64.     for y:=1 to N do
  65.       for x:=1 to M do begin
  66.         min := a[y][x];
  67.         max := a[y][x];
  68.  
  69.         fBreak := false;
  70.         for x2:= 1 to x - 1 do if a[y][x2] > max then begin fBreak := true; break; end;
  71.         if fBreak then continue;
  72.         for x2:= x + 1 to M do if a[y][x2] > max then begin fBreak := true; break; end;
  73.         if fBreak then continue;
  74.        
  75.        
  76.         for y2:= 1 to y - 1 do if a[y2][x] < min then begin fBreak := true; break; end;
  77.         if fBreak then continue;
  78.         for y2:= y + 1 to N do if a[y2][x] < min then begin fBreak := true; break; end;
  79.         if fBreak then continue;
  80.  
  81.         eCount := eCount + 1;  
  82.         Writeln( 'Elem[',y,'][',x,']: ', a[y][x] );  
  83.       end;
  84.  
  85.  
  86.   until (eCount <> 0) or (not DEV_FRB_EL_NEED);  
  87.  
  88.   if eCount = 0 then
  89.     Writeln('Elem notfound');
  90.    
  91.   printTabl(a);
  92.  
  93.   Writeln('-------------------------------');
  94.  
  95.   for y:=1 to N do  
  96.     sortLine( a[y] , true );
  97.    
  98.   printTabl(a);
  99. end.

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

  1. В коде объявлены три типа данных: item_t, line_t и tabl_t.
  2. Установлены константы M и N для представления количества строк и столбцов в матрице соответственно.
  3. Объявлены переменные a, x, y, x2 и y2 для представления строк и столбцов матрицы.
  4. Создана функция printLine, которая выводит элементы строки матрицы.
  5. Создана функция printTabl, которая выводит всю матрицу.
  6. Создана функция sortLine, которая сортирует элементы строки матрицы по возрастанию.
  7. В основной части кода сначала генерируются случайные значения для всех элементов матрицы.
  8. Затем происходит поиск минимального и максимального элементов в каждой строке и столбце матрицы.
  9. Если найдены минимальный и максимальный элементы, то они считаются седловым элементом и матрица упорядочивается по возрастанию.
  10. После этого вызывается функция printTabl для вывода отсортированной матрицы.
  11. В конце кода выводится сообщение, если седловый элемент не найден.

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


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

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

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

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

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

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