Résoudre equation avec pascal

Fermé
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 - 27 avril 2010 à 22:39
 Pascalinettissimo - 11 mai 2010 à 23:57
bonjour
je suis entrain de faire un programme pascal qui resolue l'eaquation ax²+bx+c=0 .
j'ai fais un programme mais je coirs que ya une erreure puisque ca marche pas .


program equation ;
var Dleta ,a,b,c :real ;
begin
if a=0 then
if b=0 then
if c=0 then
writeln('il y a une infinité de solution')
else
writeln('pas de solution')
else
x1:=-c/b;
else
begin
Delta:=(b)-4*a*c;
if delta<0 then
writeln('Pas de solution réelles')
else
begin
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
end;
end;
end;
readln ;
end .

et merci .

A voir également:

15 réponses

green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
27 avril 2010 à 22:43
Salut,

Je ne connais pas la programmation en pascal, mais j'ai repérai une erreur dans ton code au niveau du discriminant :

Delta:=(b)-4*a*c;


b est au carré !

Ce qui donne :

Delta:=(b*b)-4*a*c; 


Je sais pas si ça résoudra ton soucis, mais ça fera peut être avancer le smilbrlik :)

@+
1
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
27 avril 2010 à 22:43
Commences par revoir la valeur de delta ça devrait être b*b-4*a*c
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
27 avril 2010 à 23:27
j'ai changer des trucs mais ca marche pas toujours

program equation ;
var Delta ,a,b,c,x1,x2 :real ;
begin
readln (a,b,c);
if a=0 then
if b=0 then
if c=0 then
writeln('il y a une infinité de solution')
else
writeln('pas de solution')
else
x1:=-c div b;
else
begin
Delta:=b*b-4*a*c;
if delta<0 then
writeln('Pas de solution réelles')
else
begin
x1=(-b-(delta)) div (2*a);
x2=(-b+(delta)) div (2*a);
end;
end;
end;
readln ;
end .
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
27 avril 2010 à 23:32
Re,

Déjà je comprends pas bien pourquoi tu n'as traité que le cas delta négatif ??

Il y a aussi le cas delta nul => racine double
Et le cas delta strictement positif => deux racines réelles

Tu as aussi le cas où le coefficient a nul, ce qui te ramène à la résolution d'une équation linéaire etc ...

Ton programme n'est pas fini !

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
27 avril 2010 à 23:43
on viens de commencer pascal ,et chui pas bien avec , pour les cas de Delta ya
delta supérieur à 0
delta inférieur à 0
delta = 0

et si a ou B = 0 ya pas de solution

le principe de travail et là ,mais pour ecrire le programme je sais pas bien utiliser "if xxx then " .
si vous pouvez bien m'aidez pour terminer mon programme .
et merci
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
27 avril 2010 à 23:46
Je crois (mais plus très sûr) que le Pascal est sensible à la casse donc là tu as utilisé des noms de variables differents au niveau de Delta et delta (c pas la mem chose) donc essaie de modifier cela et tu nous donnes les resultats. Quant au fait que tu aie traité seulement certains cas , je penses pas que cela puisse être la cause de tes problèmes .La prochaine fois s'il ya erreur envoie nous le msg d'erreur qui apparait et on pourra mieux t'aider
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
Modifié par ayoubitou le 27/04/2010 à 23:53
voila j'ai changer les "delta " mais ca marche toujours pas .
le message d'erreur est "error in statement " .

program equation ;
var Delta ,a,b,c,x1,x2 :real ;
begin
readln (a,b,c);
if a=0 then
if b=0 then
if c=0 then
writeln('il y a une infinité de solution')
else
writeln('pas de solution')
else ============================== l'erreur est ici suite à pascal
x1:=-c/b;
else
begin
Delta:=b*b-4*a*c;
if Delta<0 then
writeln('Pas de solution réelles')
else
begin
x1=(-b-(Delta))/(2*a);
x2=(-b+(Delta))/(2*a);
end;
end;
end;
readln ;
end .
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
27 avril 2010 à 23:55
ça correspond à quoi :

x1:=-c/b; 


??
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
28 avril 2010 à 00:04
Voici un macro code
begin
readln(a,b,c);
if a=0 AND b=0 AND c=0 then
begin
writeln('Infinite de solutions');
end;
else
begin
calculer delta;
if delta < 0 then
begin
writeln('Pas de solutions');
end;
else if delta >0 then
begin
calculer les deux racines;
writeln ('L"equation admet 2 solutions qui sont 'x1 'et' x2 '.');
end;
else if delta=0 then
begin
calculer x0;
writeln('Solution double ');
et afficher la solution double;
end;
end;
end .




Là , tu complete avec les declarations de variables et les calculs des racines ainsi que les affichages ...
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
28 avril 2010 à 00:07
program equation ;
var Delta ,a,b,c,x1,x2 :real ;
begin
readln (a,b,c);
if a=0 then
if b=0 then
if c=0 then
writeln('il y a une infinité de solution')
else
writeln('pas de solution')
else

begin
Delta:=b*b-4*a*c;
if Delta<0 then
writeln('Pas de solution réelles')
else
if Delta > 0 then
begin
x1=(-b-(Delta))/(2*a);
x2=(-b+(Delta))/(2*a);
if Delta = 0
x1 :=-b div 2a
writeln (x1)
end;
end;
end;
readln ;
end .
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
Modifié par tksteph le 28/04/2010 à 00:12
Si celà marches tant mieux mais j'aurai préféré que tu utilises un AND au lieu des 3 if du debut
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
28 avril 2010 à 00:18
Il manque le cas a = 0 mais b et c différents de zéro.
Et le cas b=0, mais a et c non nuls, puis selon le signe de a et c, tu auras soit des solutions réelles soit complexes, ça dépend de ce que tu souhaites ...

Pour x1 et x2, tu as oublié ce coup si la racine pour delta.

Et pour le cas delta négatif, il y a soit pas de solutions si tu veux que des solutions réelles, soit deux racines complexes, si tu veux des solutions qui appartiennent aux complexes.

Je crois qu'on a rien oublié ...
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
28 avril 2010 à 00:24
Les cas a=0 ... ou b=0...dont tu parles sont traités déja ils sont inclus dans les conditions sur delta!!!!!
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
28 avril 2010 à 09:24
Salut,

Rien à voir ...

++
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
28 avril 2010 à 09:59
ça rien à voir , xpliq
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
28 avril 2010 à 10:48
1) J'ai déjà donné les grandes lignes ici :

https://forums.commentcamarche.net/forum/affich-17537965-resoudre-equation-avec-pascal#12

Il faut traiter tous les cas sinon le programme ne fonctionnera que partiellement ...
De plus, il n'a pas précisé s'il travaillait dans les réelles ou les complexes ...

Ici :

write(' Donnez La valeur de A ');
read(A);
write(' Donnez La valeur de B ');
read(B);
write(' Donnez La valeur de C '); 


Apparemment, il fait saisir par l'utilisateur les valeurs des coeffs, si je mets a et c différents de zéro, mais b nul, si a et b sont de même signe, selon que l'on soit des les réelles ou les complexes il y a soit une solution, soit pas de solution etc ...
Tu vois ici que delta ne rentre pas en compte ...

2) D'autre part lui demander son adresse mail pour lui envoyer un corrigé, ça ne s'appelle pas lui rendre service ! ...

@+
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
28 avril 2010 à 20:30
ok compris et je m'excuse pr le geste un peu déplacé , mais neanmoins je penses que pr un débutant en programmation Pascal, le programme de résolution des équations en pascal est un classique et en generale ne concerne que le cas des coefficients réels. Une fois de plus je m'excuse pr le geste déplacé pr le corrigé.
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
28 avril 2010 à 00:47
PROGRAM Equation_de_2eme (input,output);
VAR A,B,C,D,E,F,G,R,x,x1,x2:real;
Begin
writeln('');
writeln(' -| La Structure De Cette Equation Est : ( A*(X*X) + B*X + C ) |-');
write(' Donnez La valeur de A ');
read(A);
write(' Donnez La valeur de B ');
read(B);
write(' Donnez La valeur de C ');
read(C);
writeln('');
if (A=0) then write(' Pas De Solution ! / A=0 / ');
D:=(B*B)-(4*A*C);
if (D<0) then write(' Pas De Solution / Delta est Negatif ! / ');
E:=2*A;
F:=-B;
R:=sqrt(D);
G:=-R;
x:=F/E;
x1:=F-G/E;
x2:=F+R/E;
if (D>0) then
writeln(' Les Resultats Sont x1 = ',x1,' x2 = ',x2)
else
writeln(' Le Resultat De X est : ',x);
writeln('');
writeln('');
writeln(' Les different calcules sont :');
writeln(' Le Resultat De Delta est : ',D);
write(' Le Resultat De Racine de Delta est : ',R);
readln ;
end.


j'ai recu un aide avec ce programme mais ca marche pas encore .
"error 207 : invalid floating point operation ".
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
28 avril 2010 à 13:00
voila j'ai refais le programme mais ca marche pas toujours

program equation;
var a,b,c,x1,x2,x0,Delta : real ;
begin
writeln ('donner les bornes de lequation ') ;
writeln ('donner la valeur de a ') ;
readln (a) ;
writeln ('donner la valeur de b ') ;
readln (b) ;
writeln ('donner la valeur de c ') ;
readln (c) ;

if a =0 then
writeln('erreur type')
else
begin
if a =0 and b=0 then
begin
if c =0 then

writeln (' infinite ')
else
writeln ('pas de solution')

else
begin
Delta := b*b - (4 *a*c) ;
if Delta <0 then
writeln ('pas de solution')
else
begin
if Delta = 0 then
begin
x0 := -b / (2*a) ;
writeln (x0) ;
end;
end ;
else
begin
x1 := (-b - sqrt (Delta)) / 2*a ;
x2 := (-b + sqrt (Delta)) / 2*a ;
writeln (x1 ,x2 ) ;
end;

end;
end;
end;


readln;
end .
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
28 avril 2010 à 13:16
voila j'ai refais le programme mais ca marche pas toujours

Non ! C'est vrai ...

Je t'ai déjà pas mal défriché le problème ici :

https://forums.commentcamarche.net/forum/affich-17537965-resoudre-equation-avec-pascal#19


if a =0 then
writeln('erreur type')


Il n'y a aucune raison de ne pas traiter le cas a=0, et de renvoyer un message d'erreur ...

...
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
28 avril 2010 à 13:49
je comprends toujours pas
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
28 avril 2010 à 13:57
Qu'est-ce que tu ne comprends pas ??
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
28 avril 2010 à 14:06
je comprends pas ce que je dois changer dans le programme pour que ca marche
0
green day Messages postés 26371 Date d'inscription vendredi 30 septembre 2005 Statut Modérateur, Contributeur sécurité Dernière intervention 27 décembre 2019 2 162
28 avril 2010 à 14:23
As ton avis ? Qu'est-ce qui manque ? :)
0
bonjour,
j'ai refais le programme mais j'ai pas les bonnes résultats


program thhh ;
var a,b,c,x1,x2,D : real ;
begin
writeln('donner les trois bornes ') ;
readln (a,b,c) ;
if a=0 then
if b=0 then
if c=0 then
writeln ('R est la solution ')
else
writeln ('pas de solution')
else
writeln ('la solution est ',-c/b)
else

begin
D:=b*b-(4*a*c) ;
if D<0 then
writeln ('pas de solution dans R')
else
if D=0 then
writeln('ya une solution',-b/2*a :0:2 )
else
begin
x1:=-b-sqrt (D) / 2*a ;
x2:=-b+sqrt (D) / 2*a ;
writeln ('les solutions ',x1,x2);
end ;
end;
readln ;
end .
0
Pascalinettissimo
11 mai 2010 à 23:57
Avec Pascal c'est toujours difficile de résoudre quoi que ce soit. Il est bien trop vaniteux pour accepter les remarques.
Oui, il va bien mon nouveau clavier.
0