@HNKHENM

Компилятор паскаля выдаёт результат (при чём желаемый) с ошибкой времени выполнения...Где спряталась ошибка?

Понимаю , код далеко не идеальный , но ведь нужный результат хоть и с ошибкой , но выдаёт!
В функции надо было найти минимальный элемент в строке двумерного массива, и поменять местами элемент главной диагонали в этой же строке с этим минимальным элементом.

<code lang="delphi">
program four;

const n = 3;

type

matrix = array [1..n,1..n] of integer;

 var a:matrix; {b:secondMatrix;}
  mainJ, mainI,i, j,buf, min: integer;
{++++++++++++++++  <Функция>  +++++++++++++++++++++}

function anotherSort(var a: matrix):integer;

  var i1, j1,mi,mj: integer;
  begin
  
    min := a[1,1]; 
    for i1 := mainI to mainI do
    begin
      for j1 := 1 to n do
      begin
        if (min > a[i1,j1]) then
        begin
      
          min:=a[i1,j1];
          mi:=i1;
          mj:=j1;
          

        end;        
      end;
    end;
    buf := a[mi,mj];
    a[mi,mj] := a[mainI,mainJ];
    a[mainI,mainJ] := buf;      
    result := a[i,j];
  end;
{++++++++++++++++  </Функция>  +++++++++++++++++++++}
{НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ}
begin

  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      a[i,j]:=(random(8)-9);
      write(a[i,j]:5);
    end;
    writeln;
  end;
  
  for i := 1 to n do
    for j := 1 to n do
    begin
      if ( i = j ) and (a[i,j] < 0) then
      begin
      
        mainI := i; 
        mainJ := j;  
        anotherSort(a);
        
      end;  
    end; 
  
writeln;
  
  for i := 1 to n do
  begin
    for j := 1 to n do
      begin
        write(a[i,j]:5);
      end;
      writeln;
  end;
     
 end.
{КОНЕЦ ОСНОВНОЙ ПРОГРАММЫ}
</code>
  • Вопрос задан
  • 2187 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mcroodberg
Думаю, что в цикле i1 функции anotherSort должен быть какой-то разумный счетчик, а не "mainI to mainI"
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы