Herzlich willkommen in der Delphi-PRAXiS, heru1990.
Du suchst iterativ in Schritten von 1E-4 nach einer ganzzahligen Lösung einer Funktion. Dein Abbruchkriterium ist aber unzuverlässig, da dein Rechner ganzzahlige Ergebnisse oft nach Art der ersten Taschenrechner nur näherungsweise als Fließkommazahl wiedergeben kann. Notwendig ist da ein Epsilon-Test:
Delphi-Quellcode:
const
EPSILON = 1E-8;
function F(x: Double): Double;
begin
Result := (-8/5) * x + Sqrt(39 / 25 * x * x - 19);
end;
procedure TDemoForm.ButtonClick(Sender: TObject);
var
x, y: Double;
begin
x := -100;
repeat
x := x + 0.0001;
y := F(x);
until IsZero(y - Round(y), EPSILON);
ShowMessage(Format('%0.4f %.0n', [x, y]));
end;
Getippt und nicht getestet.
Freundliche Grüße vom marabu