@Sliznyak

Программа должна менять местами минимальный и максимальный элементы матрицы, но почему то, чаще всего, она меняет не те элементы.С чем это связано?

Program Podprogrammi;
uses crt;
type masiv = array [1..20, 1..20] of integer;

var A,B,C:masiv;
    n,k:integer;
    irmax,icmax,irmin,icmin:integer;

procedure init(m: string; var mas:masiv);
begin
  writeln('Введите элементы массива ', m);
  for var i:=1 to n do
    for var j:=1 to k do begin
      write('[', i, ', ', j, '] = ');
      readln(mas[i, j]);
    end;
  writeln;
end;

procedure output(var mas:masiv);
begin
  for var i:=1 to n do begin
    for var j:=1 to k do
      write(mas[i, j]:5);
    writeln;
  end;
end;

procedure castling(var mas:masiv);
var max,min,g:integer;
    i,j:integer;
begin
  i:=1;
  j:=1;
  max:=0;
  min:=99999;
  for i:=1 to n do begin
    for j:=1 to k do
      if (mas[i, j]) > max then begin
        max:=(mas[i, j]);
        irmax:=i;
        icmax:=j;
      end;
      
      if (mas[i, j]) < min then begin
        min:=(mas[i, j]);
        irmin:=i;
        icmin:=j;
      end;
  end;
  g:=(mas[irmax, icmax]);
  mas[irmax,icmax]:=(mas[irmin, icmin]);
  mas[irmin,icmin]:=g;
  output(mas);
end;

begin
  repeat
    writeln('Введите кол-во строк в массивах (не больше 20)');
    read(n);
  until (n>0) and (n<21);

  repeat
    writeln('Введите кол-во столбцов в массивах (не больше 20)');
    read(k);
  until (k>0) and (k<21);

  init('A', A);
  init('B', B);
  init('C', C);
  clrscr;
  writeln('Массив A:');
  output(A);
  writeln('Массив B:');
  output(B);
  writeln('Массив C:');
  output(C);
  
  writeln('Новый массив A');
  castling(A);
  writeln('Новый массив B');
  castling(B);
  writeln('Новый массив C');
  castling(C);
  
end.
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы