Задать вопрос
@VinogradovDionis
Студент

Как изменить алгоритм для Lazarus?

Мне нужно перенести алгоритм этого кода в Lasarus форму StringGrid2.Cells

uses crt;
var
a:array[1..10,1..10] of integer;
b:array[1..10,1..10] of real;
i,j,min,n,c:integer;
begin
  randomize; clrscr;
  write('N='); readln(n); min:=100;
  writeln('Kak vvesty danniye:');
  writeln('1. Random');
  writeln('2. Vruchnuyu'); readln(c);
  writeln('Matrix:');
 
  case c of
  1: begin
        for i:=1 to n do begin
          for j:=1 to n do begin
            a[i,j]:=-100+random(200);
            if (ABS(a[i,j])<ABS(min)) and (a[i,j]<>0) then min:=a[i,j];
            write(a[i,j]:5);
          end;
          writeln;
        end;
      end;
  2: begin
       for i:=1 to n do
         for j:=1 to n do begin
           readln(a[i,j]);
         if (ABS(a[i,j])<ABS(min)) and (a[i,j]<>0) then min:=a[i,j];
         end;
      end;
  end;
 
  writeln('Min = ',min);
  writeln('Result:');
  for i:=1 to n do begin
    for j:=1 to n do begin
      b[i,j]:=a[i,j]/min;
      if frac(b[i,j])<>0 then write(b[i,j]:6:2,' ')
        else write(b[i,j]:6:0,' ');
    end;
    writeln;
  end;
  readkey;
end.


Он запускает приложение, но выдает ошибку при выполнении алгоритма invalid integer
6217e0687d894030070140.jpeg

вот мой код

var
i,j,n,c:integer;
min:longint;

begin
clrscr;
min:=10000000;
n:=StrToInt(Edit1.Text)-1;

if n>9 then begin
  ShowMessage('Слишком большой размер матрицы');
  exit;
end;

StringGrid2.Clean;

begin
      for i:=1 to n do
        for j:=1 to n do begin

        if (ABS(StrToInt(StringGrid1.Cells[i, j]))<ABS(min)) and (StrToInt(StringGrid1.Cells[i, j])<>0) then
        min:=ABS(StrToInt(StringGrid1.Cells[i, j]));
        end;
     end;
for i:=1 to n do begin
  for j:=1 to n do begin
    StringGrid2.Cells[i, j]:= Format('%5.1n', [StrToInt(StringGrid1.Cells[i, j])/min]);

    if frac(StrToInt(StringGrid2.Cells[i, j]))<>0 then StrToInt(StringGrid2.Cells[i, j])
    else StringGrid2.Cells[i, j]:= Format('%5.1n', [StrToInt(StringGrid1.Cells[i, j])/min]);



  end;

end;


end;
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
HemulGM
@HemulGM Куратор тега Delphi
Delphi Developer, сис. админ
8,2 - это не integer,. Это дробное, вещественное число
Переводить нужно строку во Float, а не в int
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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