Mon logiciel se referme tout seul ><
Résolu
Hadjer's
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Hadjer's Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Hadjer's Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
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é ;
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 ?
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 ?
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). -
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 :( .