[Мы решаем ваши проблемы с Си и Паскалем ]
Главная » Статьи » Задачи из заказов » Заказ 09.01.07 Pascal

Найти наибольший элемент среди стоящихна главной и побочной диагоналях и оменять его местами с элементом, стоящим на пересечении диагоналей.
{
  -----------------------------------------------------------------------

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

  -----------------------------------------------------------------------
}

const
  nmax = 101;

var
  a: array[1..nmax, 1..nmax] of longint;
  n, i, j, maxi, maxj, v : longint;

begin
  repeat
    write('Введите нечётное n < ', nmax, ': ');
    readln(n);
    if not odd(n) then
      writeln('n должно быть нечётно');
    if n > nmax then
      writeln('n должно быть меньше ', nmax);
  until (odd(n) and (n < nmax));
  writeln('Ввод матрици');
  for i:=1 to n do
    for j:=1 to n do begin
      write('a[', i, ',', j, '] = ');
      readln(a[i, j]);
    end;
 
  maxi := 1;
  maxj := 1;
  for i:=1 to n do
    for j:=1 to n do begin
      if (a[maxi,maxj] < a[i, j]) then begin
        maxi := i;
        maxj := j;
      end;
      if (a[maxi, maxj] < a[i, n - j + 1]) then begin
        maxi := i;
        maxj := n - j + 1;
      end;
    end;

  v := a[maxi, maxj];
  a[maxi, maxj] := a[(n + 1) div 2, (n + 1) div 2];  
  a[(n + 1) div 2, (n + 1) div 2] := v;
   
  writeln('После обработки матрица принела следующий вид:');
  for i:=1 to n do begin
    for j:=1 to n do
      write(a[i, j], ' ');
    writeln;
  end;
end.
Категория: Заказ 09.01.07 Pascal | Добавил: solver (09.01.2007) | Автор: Павлов Юрий E
Просмотров: 3935