Racine d'un polynome avec pascal

Utilisateur anonyme -  
 Lita -
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?

1 réponse

  1. Lita
     
    - 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