résoudre equation avec pascal [pascal] - Delphi/Pascal - Programmation
Marsh Posté le 28-04-2010 à 09:43:57
Je vois pas comment ca pourrait marcher puisque manifestement vous n'avez pas essayé de le compiler, sinon on n'aurait pas des erreurs flagrantes d'orthographe dans le code que vous avez posté (Dleta puis Delta puis delta)
A+,
Marsh Posté le 28-04-2010 à 10:38:11
if then if then if... c'est moche... utilise des "and"
ensuite, tes variables n'ont pas le mêmes noms...
tu zapes des points virgules
enfin, tu ne déclare pas toutes les variables
Marsh Posté le 28-04-2010 à 13:01:33
bonjour ,
j'ai refais le programme mais ca marche toujours pas .
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 .
Marsh Posté le 28-04-2010 à 13:48:20
ayoubitou, t'as 16 ans donc autant prendre de bonnes habitudes dès le départ
Y a un truc (parmi tant d'autres) qui énerve les développeurs, c'est "ça marche pas". Parce que ça n'aide en RIEN à comprendre où sont les erreurs.
Pour qu'on t'aide, merci, donc, soit de décrire précisément le souci, soit de poster la log de compilation, ou toute autre information potentiellement utile.
Marsh Posté le 28-04-2010 à 13:52:02
pour l'erreur c'est "error 41 operand types do not match operator"
Marsh Posté le 28-04-2010 à 13:59:58
Il devrait y avoir aussi une indication de ligne. (En passant, utilise la balise de code, tu nous donneras un code correctement indente et avec les lignes numerotees).
Ce ne serait pas 0.0 plutot que 0 pour avoir des reels (je ne sais plus si Pascal fait la conversion tout seul ou pas) ?
Marsh Posté le 29-04-2010 à 09:10:17
ayoubitou a écrit : bonjour , |
Tes indentations c'est du n'importe quoi,
Ensuite tu fais à un moment : if - else - end -else ce qui est complétement illogique
pour ton erreur, c'est au niveau de ta première conditionnelle, il te manque des parenthèses.
Voilà le code que tu devrais avoir... (dernière fois que je mâche le travail).
program equation;
var a,b,c,x1,x2,x0,Delta : real ;
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')
end
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
else
begin
x1 := (-b - sqrt (Delta)) / 2*a ;
x2 := (-b + sqrt (Delta)) / 2*a ;
writeln (x1 ,x2 ) ;
end
end
end
end;
Marsh Posté le 11-05-2010 à 22:09:31
bonjour,
j'ai refais le programme mais j'ai pas les bonnes resultats
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 )
else
begin
x1:=-b-sqrt (D) / 2*a ;
x2:=-b+sqrt (D) / 2*a ;
writeln ('les solutions ',x1,x2);
end ;
end;
readln ;
end .
Marsh Posté le 12-05-2010 à 09:04:12
Ajoute les parentheses qui manquent dans le calcul de x1, x2.
Marsh Posté le 27-04-2010 à 22:39:06
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 .