jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 9 févr. 2006 à 11:32
au fait dans ce code est plus un exercice de style pour voir en combien
d'itération on arrive au résultat qu'une façcon efficace de calculer
une racine carrée.
sinon c'est bien un algorythme de cacul de racine carrée par approximations successives
j'ai d'ailleurs mal converti le do.. while en repeat.. until
avec while on repete tant que test>0.0001 et avec repeat on répete juasqu'à ce test<0.001!!
il faut donc inverser le test ce qui donne:
procedure TForm1.BitBtn1Click(Sender: TObject);
var nombre, resultat, resultat0, test : real ;//ou double
n:integer;
begin
n:= 0;
nombre := StrToFloat(Edit1.Text);
resultat:=(1+nombre)/2;
repeat
resultat0: =resultat;
resultat:= (resultat0+nombre/resultat0)*0.5;
inc(n);
test:=(resultat-resultat0)/resultat0;
if (test<0)then test: =-test;
until(test<0.0001);
Edit2.Text := FloatToStr(resultat);
Edit3.Text := IntToStr(n);
end;
@+
jlen
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 9 févr. 2006 à 11:58
Ah oui la ça change tout
le résultat est maintenant bien la racine carrée du nombre donné dans Edit1
moi je n'ai pas décortiqué la procédure, n'ayant pas été en classe à l'école,
je me suis contenté de la tester et le résultat n'était pas celui que j'attendais
mais la tout est rentré dans l'ordre c'est parfait.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 9 févr. 2006 à 12:13
c'est un des pièges des convertions de C en delphi et inversement . En
travaillant simulatnément sur les 2 langages je devrais le savoir mais
je me fais régulièremnt pièger
note si tu refais le test la précision dépend de la valeur que tu donne
pour la sortie --> plus l'epsilon (accuracy pour parler
anglais) sera faible meilleure sera la précision et plus le nombre
d'itération sera élevé.