Racine d'un polynome avec pascal

Fermé
Utilisateur anonyme - 24 juin 2004 à 20:43
 Lita - 24 juin 2004 à 20:54
voila je cherche a calculer les racine d'un polynome de second degres avec pascal, voila le code :
PROGRAM Racines;

VAR
A,B,C : INTEGER;
Discriminant :REAL;
Racine1, Racine2, Racine3 : REAL;


BEGIN
Write('donnez les valeurs de A,B,C :');
Readln (A,B,C);
Discriminant := (B*B)-(4*A*C);
Racine2 :=( (-B) - sqrt(Discriminant) )/ (2*A);
Racine3 :=( (-B) + sqrt(Discriminant) )/ (2*A);

IF Discriminant < 0
THEN Writeln ('pas de racines dans R');

IF Discriminant = 0
THEN Writeln ('il y a une seule racine :',Racine1);
IF Discriminant >0
THEN Writeln('il y a deux racines :', 'R1 =',Racine2, 'et', 'R2 =',Racine3);

END.

tout marche bien si le discriminant est supérieur a 0, mais dans le cas ou il est inférieur à 0, à l'éxecution j'ai un message d'erreur :
" error 207 : invalid floating poin operation"
et je vois pas tros ce que cala signifie?
A voir également:

1 réponse

- où est-ce que tu as calculé Racine1?
- Tu calcules seulement les racines quand le discriminant est positif ou nul. ie qqch comme ça:


BEGIN
  Writeln('donnez les valeurs de A,B,C :');
  Readln (A,B,C);
  Discriminant := (B*B)-(4*A*C);


  IF Discriminant < 0
  THEN Writeln ('pas de racines dans R');

  IF Discriminant = 0
  THEN Writeln ('il y a une seule racine :', -B/2*A);
  IF Discriminant >0
  THEN 
      Begin
        Racine2 :=( (-B) - sqrt(Discriminant) )/ (2*A);
        Racine3 :=( (-B) + sqrt(Discriminant) )/ (2*A);
        Writeln('il y a deux racines :', 'R1 =',Racine2, 'et', 'R2 =',Racine3);
      End;

END. 

0