Mon logiciel se referme tout seul ><

Résolu/Fermé
Hadjer's Messages postés 12 Date d'inscription samedi 20 avril 2013 Statut Membre Dernière intervention 24 juillet 2014 - Modifié par Hadjer's le 20/04/2013 à 19:31
Hadjer's Messages postés 12 Date d'inscription samedi 20 avril 2013 Statut Membre Dernière intervention 24 juillet 2014 - 21 avril 2013 à 00:03
Salut !
Je débute en programmation et d'après un article que j'ai lu sur ce site même, il est conseillé de commencer par Pascal.
Eh bien voilà mon premier programme conçu pour résoudre une équation du deuxième degré ;

Program RESOLUTION  (input,output); 
Var 
A, B, C, D, x, m, n: Real; 
Begin 
Writeln ('Entrer A '); 
Readln (A); 
Writeln('Entrer B'); 
Readln (B); 
Writeln ('Entrer C'); 
Readln (C); 
D := B*B - (4*A*C); 
x := (-B)/(2*A); 
m := (-B-sqrt(D))/(2*A); 
n := (-B+sqrt(D))/(2*A); 
IF D=0 THEN Writeln ('La solution est',x) 
Else IF D<0 THEN writeln ('Il n"y a pas de solution') 
Else Writeln ('la premiere solution est:',m,'La deuxieme est',n); 
Readln; 
End. 


Jusque là y a rien de grave , le programme est correctement compilé , quand je propose des valeurs pour A , B et C tel que D est positif ça marche très bien , mais quand j'entre 3 valeur pour mes variables tel que Delta soit strictement inférieur à 0 mon petit bout de logiciel se referme tout seul au lieu d'afficher "Il n'ya pas de solution" .

Expliquez-moi s'il vous plait ce qui s'est passé ? et comment faire pour que ça marche ?



A voir également:

2 réponses

Quand le compilateur se retrouve devant une situation qu'il ne peut gerer, une exception est declenchée, (EInvalidOp dans ton cas), selon que les exceptions sont gerées par le debogueur ou à la charge du programmeur, dans le deuxième cas si aucune gestion des exceptions n'existe dans ton programme, l'exception se propage et le systeme d'exploitation intervient et ferme le programme devenu instable.

Parce que dans R la règle des signes fait qu'un nombre négatif ne peut donc être que le produit de deux nombres de signes inverses, ce qui est en contradiction avec la définition d'un carré qui est le produit d'un même nombre par lui-même, dans l'égalité : D := B*B - (4*A*C); Si D est négatif, l'égalité m := (-B-sqrt(D))/(2*A); induit le compilateur à calculer la racine carrée d'un nombre négatif (Sujet qui necessite un traitement dans le plan des nombres complexes).
1
Hadjer's Messages postés 12 Date d'inscription samedi 20 avril 2013 Statut Membre Dernière intervention 24 juillet 2014
20 avril 2013 à 23:56
Merci :D
0
Hadjer's Messages postés 12 Date d'inscription samedi 20 avril 2013 Statut Membre Dernière intervention 24 juillet 2014
Modifié par Hadjer's le 21/04/2013 à 00:11
Donc je dois mettre mes deux solutions après la conditions (si D<0 alors..) pour que le logiciel n'aie pas à faire des calculs incluant la racine carrée d'un nombre négatif. et ça a marchééééé :D
0
Hadjer's Messages postés 12 Date d'inscription samedi 20 avril 2013 Statut Membre Dernière intervention 24 juillet 2014
20 avril 2013 à 20:09
et puis j'ai essayé avec ça
Program RESOLUTION  (input,output);
Var
A, B, C, D, x, m, n: Real;
Const
E= 'Pas de soluion';
Begin
Writeln ('Entrer A ');
Readln (A);
Writeln('Entrer B');
Readln (B);
Writeln ('Entrer C');
Readln (C);
D := B*B - (4*A*C);
x := (-B)/(2*A);
m := (-B-sqrt(D))/(2*A);
n := (-B+sqrt(D))/(2*A);
IF D=0 = True THEN
Begin
Writeln ('La solution est',x)
End
Else IF D<0 = True THEN
Begin
writeln(E)
End
Else
BEGIN
Writeln ('la premiere solution est:',m,'La deuxieme est',n)
END;

Readln;

End.


même résultat :( .
0