Показать сообщение отдельно
  #4  
Старый 22.08.2023, 07:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

может баг FPC?
Вот переписал твой алгоритм на Delphi XE3 (сорри, но твой код написан просто через жопу).
Что под дебагером, что без - результат одинаковый.

Код:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

function GetNextNumber(SrcNumber : Integer) : Integer;
begin
  Result := 0;
  Repeat
    Result := Result + Sqr((SrcNumber mod 10));
    SrcNumber := SrcNumber div 10;
  Until (SrcNumber = 0);
end;

const
  Iterations = 30;

var
  I : Integer;
  InitNumber : Integer;
  RepeatCount : Integer;
  NumbersArray : Array Of Integer;

begin
  try
    InitNumber := 256;
    SetLength(NumbersArray,Iterations+1);
    NumbersArray[0] := InitNumber;
    For I := 1 To Iterations Do
      NumbersArray[i] := GetNextNumber(NumbersArray[I-1]);
    RepeatCount := 0;
    For I := High(NumbersArray)-1 DownTo Low(NumbersArray) Do
      If NumbersArray[i] = NumbersArray[High(NumbersArray)] Then Inc(RepeatCount);

    WriteLn('Initial number: ',InitNumber);
    WriteLn('Number of iterations: ',Iterations);
    WriteLn('Array:');
    For I := Low(NumbersArray) To High(NumbersArray) Do
      Write(NumbersArray[i],' ');
    WriteLn;
    WriteLn('Iteration line count (0 means that row of iteration is too short): ',RepeatCount);

    WriteLn;
    WriteLn('Press ENTER to close the window...');
    ReadLn;
  except
    on E: Exception do
      begin
        Writeln(E.ClassName, ': ', E.Message);
        WriteLn('Press ENTER to close the window...');
        ReadLn;
      end;
  end;
end.
Ответить с цитированием