MoveX
Messages postés230Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention16 juillet 20051 24 oct. 2004 à 18:01
javais remarquer que la moitie des termes etaient negatifs, j avais meme poster pour que quelquun mexplique pourquoi...
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 24 oct. 2004 à 01:46
Pourquoi vouloir calculer les 1000 première itérations alors que, même avec a, b et c déclarés en Int64, le résultat est faux à partir de la 92e itération (débordement de capacité) ?
Comment le vérifier ?
Solution :
var
a,b,c: int64;
n: integer;
begin
a:=1;
b:=2;
Memo1.Clear;
Memo1.Lines.BeginUpdate;
for n:=1 to 1000 do // on calcule les 1000 premiers nombres
begin
Memo1.Lines.Add(IntToStr(n) + ' : ' +Inttostr(a)); // On ajoute au memo le nombre trouve
c:=a+b; // on calcule le nombre suivant a et b
a:=b; // on décale le rang
b:=c;
if c < 0 then break;
end;
Memo1.Lines.EndUpdate;
end;
24 oct. 2004 à 18:01
24 oct. 2004 à 01:46
Comment le vérifier ?
Solution :
var
a,b,c: int64;
n: integer;
begin
a:=1;
b:=2;
Memo1.Clear;
Memo1.Lines.BeginUpdate;
for n:=1 to 1000 do // on calcule les 1000 premiers nombres
begin
Memo1.Lines.Add(IntToStr(n) + ' : ' +Inttostr(a)); // On ajoute au memo le nombre trouve
c:=a+b; // on calcule le nombre suivant a et b
a:=b; // on décale le rang
b:=c;
if c < 0 then break;
end;
Memo1.Lines.EndUpdate;
end;