Поиск наибольшего элемента в матрице

Дана действительная квадратная матрица порядка N(n- нечетное). Все элементы матрицы различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

code: #pascal
  1. const
  2. nmax = 101;
  3.  
  4. var
  5. a: array[1..nmax, 1..nmax] of longint;
  6. n, i, j, maxi, maxj, v : longint;
  7.  
  8. begin
  9.  repeat
  10.  write('Введите нечётное n < ', nmax, ': ');
  11.  readln(n);
  12.  if not odd(n) then
  13.   writeln('n должно быть нечётно');
  14.   if n > nmax then
  15.    writeln('n должно быть меньше ', nmax);
  16.   until (odd(n) and (n < nmax));
  17.   writeln('Ввод матрици');
  18.   for i:=1 to n do
  19.   for j:=1 to n do begin
  20.  write('a[', i, ',', j, '] = ');
  21.  readln(a[i, j]);
  22. end;
  23.  
  24. maxi := 1;
  25. maxj := 1;
  26. for i:=1 to n do
  27. begin
  28.  if a[i,i]>a[maxi,maxj] then
  29. begin maxi:=i;
  30.  maxj:=i;
  31. end;
  32. if a[i,n-i+1]>a[maxi,maxj] then
  33. begin maxi:=i;
  34.  maxj:=n-i+1;
  35. end;
  36. end;
  37.  
  38. v := a[maxi, maxj];
  39. a[maxi, maxj] := a[(n + 1) div 2, (n + 1) div 2];
  40. a[(n + 1) div 2, (n + 1) div 2] := v;
  41.  
  42. writeln('После обработки матрица принела следующий вид:');
  43. for i:=1 to n do begin
  44. for j:=1 to n do
  45. write(a[i, j], ' ');
  46. writeln;
  47. end;
  48. end.
Поделиться:

Похожие статьи: