Bonjour
La question est de faire un programme qui donne les solutions d'équation de deuxième degré.
Voilà ma réponse dans la figure
Je ne sais pas pourquoi mon programme ne fonctionne pas, s'il vous plaît j'ai besoin de votre aide.
Bonjour
La question est de faire un programme qui donne les solutions d'équation de deuxième degré.
Voilà ma réponse dans la figure
Je ne sais pas pourquoi mon programme ne fonctionne pas, s'il vous plaît j'ai besoin de votre aide.
ok voilà :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 program eqt; uses wincrt ; var a,b,c:integer; delta,x1,x2,x:real; begin write('saisir la valeur de a');read(a); write('saisir la valeur de b');read(b); write('saisir la valeur de c');read(c); delta:=sqr(b)-4*a*c; write('le solution est'); if delta > 0 then begin x1:=[-b-sqrt(delta)]/2*a; x2:=[-b+sqrt(delta)]/2*a ; write('x1',x1,'x2',x2); end else if delta = 0 then x:=-b/2*a write('x',x); else write('pas de solution'); end;
Pour que le programme "fonctionne", il faudrait déjà qu'on puisse le compiler.
Il faut donc commencer par résoudre les problèmes de compilation.
Premièrement, il y a un endroit où vous utilisez des crochets alors qu'il faudrait des parenthèses.
Deuxièmement, il y a un endroit où vous avez oublié un begin et un end (c'est pour le cas où delta vaut 0).
Troisièmement, un programme en Pascal se termine par un point (et non par un point-virgule).
Enfin, il me semble qu'il faut remplacer Read par ReadLn.
Pas de quoi.
Bonjour,
C'est vraiment mesquin d'ajouter à la liste des doléances, mais:
Cinquièmement tout les résultats sont fauxen raison de l'oubli d'une paire de parenthèses: il fallait écrire:
L'introducion d'une variable réelle supplémentaire eût permis de ne faire qu'une division, en posant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 x1:=(-b-sqrt(delta))/(2*a); x2:=(-b+sqrt(delta))/(2*a) ; ... x:=-b/(2*a); ...
Sixièmement, une résolution complète de l'équation aurait dû envisager les cas
Code : Sélectionner tout - Visualiser dans une fenêtre à part Ka:= 0.5 / a;
# a = 0 (indispensable, à cause de la division qui intervient),
# c = 0 conduisant à la forme triviale (a*x2 + b*x = 0), pour laquelle le calcul de Sqrt(Delta)) n'est plus nécessaire;
le programme aurait dû présenter la structure:
Septièmement, l'écriture des solutions est véritablement choquante, quoiqu'elle conduise à des résultats corrects, parce qu'elle ne respecte pas la syntaxe réservée aux fonctions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 IF a=0 THEN BEGIN END ELSE IF c=0 THEN BEGIN END ELSE BEGIN END;
Le programme aurait dû comporter une autre variable réelle pour mémoriser la valeur de la racine carrée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Variable:= Fonction(Variable1, ... );
ce qui aurait d'ailleurs permis de n'effectuer qu'une seule fois ce calcul:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Rd:= Sqrt(Delta);
Je reconnais que cette dernière remarque dépasse largement le cadre de ce sujet, et même celui du langage Pascal, et qu'elle peut soulever des polémiques ... cette désinvolture calculatoire apparaissant largement répandue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 x1:=[-b - Rd] * Ka; x2:=[-b + Rd] * Ka ;
Passez de bonnes fêtes.
Partager