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
Pascalinettissimo - 11 mai 2010 à 23:57
A voir également:
- Programme pascal equation second degré
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Programme demarrage windows 10 - Guide
- Second écran - Guide
- Mettre en veille un programme - Guide
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
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 :
b est au carré !
Ce qui donne :
Je sais pas si ça résoudra ton soucis, mais ça fera peut être avancer le smilbrlik :)
@+
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 :)
@+
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
27 avril 2010 à 22:43
Commences par revoir la valeur de delta ça devrait être b*b-4*a*c
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
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 .
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 .
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
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 !
@+
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 !
@+
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
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
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
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
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
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
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 .
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 .
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
27 avril 2010 à 23:55
ça correspond à quoi :
??
x1:=-c/b;
??
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
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 ...
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 ...
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
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 .
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 .
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
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
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
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é ...
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é ...
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
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!!!!!
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
28 avril 2010 à 09:24
Salut,
Rien à voir ...
++
Rien à voir ...
++
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
28 avril 2010 à 09:59
ça rien à voir , xpliq
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
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 :
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 ! ...
@+
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 ! ...
@+
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
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é.
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
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 ".
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 ".
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
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 .
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 .
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
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
Il n'y a aucune raison de ne pas traiter le cas a=0, et de renvoyer un message d'erreur ...
...
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 ...
...
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
28 avril 2010 à 13:49
je comprends toujours pas
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
28 avril 2010 à 13:57
Qu'est-ce que tu ne comprends pas ??
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
28 avril 2010 à 14:06
je comprends pas ce que je dois changer dans le programme pour que ca marche
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
28 avril 2010 à 14:23
As ton avis ? Qu'est-ce qui manque ? :)
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 .
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 .