Division zéro [Pascal]
Résolu
Pr0-g(r)Amer
-
Pr0-g(r)Amer -
Pr0-g(r)Amer -
Bonjour à tous,
Mon programme est une calculatrice à nombres complexes.
J'ai un problème lorsque j'exécute mon programme celui-ci se ferme lorsqu'il requiert une division par zéro, je souhaiterais mettre en place une sécurité qui permettrais à l'utilisateur d'entrer des valeurs différentes lorsque cette erreur se produit.
Voici le module concerné :
NB : la procédure "saisir_cm" permet la saisie d'un nombre complexe sous forme de couple ( = tableau de 2 REAL )
procedure division;
var cm3:couple;cm4:couple;c:real;d:real;e:real;cm1:couple;cm2:couple;
begin
writeln;writeln;writeln;
WRITELN('Vous allez saisir le nombre complexe … diviser puis celui qui divise.');
saisir_cm (cm1);
writeln;writeln;writeln;
writeln('ATTENTION le d‚nominateur doit etre diff‚rent de 0');
saisir_cm (cm2);
cm3:=conj(cm2);
cm4:=mult(cm1,cm3);
e:=(cm2[1]*cm2[1])-(cm2[2]*cm2[2]);
c:=cm4[1]/e;
d:=cm4[2]/e;
{$I+}
writeln;
Writeln ('Le r‚sultat est ',c:0:3,' + ',d:0:3,'*i');
writeln;writeln;writeln;writeln;
writeln('Tapez sur <Entr‚e> pour retourner au menu');
Readln;
end ;
En vous remerciant par avance pour votre aide.
Pro-gameR
Mon programme est une calculatrice à nombres complexes.
J'ai un problème lorsque j'exécute mon programme celui-ci se ferme lorsqu'il requiert une division par zéro, je souhaiterais mettre en place une sécurité qui permettrais à l'utilisateur d'entrer des valeurs différentes lorsque cette erreur se produit.
Voici le module concerné :
NB : la procédure "saisir_cm" permet la saisie d'un nombre complexe sous forme de couple ( = tableau de 2 REAL )
procedure division;
var cm3:couple;cm4:couple;c:real;d:real;e:real;cm1:couple;cm2:couple;
begin
writeln;writeln;writeln;
WRITELN('Vous allez saisir le nombre complexe … diviser puis celui qui divise.');
saisir_cm (cm1);
writeln;writeln;writeln;
writeln('ATTENTION le d‚nominateur doit etre diff‚rent de 0');
saisir_cm (cm2);
cm3:=conj(cm2);
cm4:=mult(cm1,cm3);
e:=(cm2[1]*cm2[1])-(cm2[2]*cm2[2]);
c:=cm4[1]/e;
d:=cm4[2]/e;
{$I+}
writeln;
Writeln ('Le r‚sultat est ',c:0:3,' + ',d:0:3,'*i');
writeln;writeln;writeln;writeln;
writeln('Tapez sur <Entr‚e> pour retourner au menu');
Readln;
end ;
En vous remerciant par avance pour votre aide.
Pro-gameR
3 réponses
-
Demande a Chuck Norris lui il arrive a diviser par 0.
Bilou. -
Bonjour,
Je crois qu'il faut agir juste après le calcul de e, du genre:
********************
Si e=0 alors retouner au entrées de départ, en mettant un message d'avertissement
********************
Comme cela il n'y aura pas de plantage et de nouvelles entrées seront possibles
Pont -