[pascal]résoudre equation avec pascal

résoudre equation avec pascal [pascal] - Delphi/Pascal - Programmation

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 .

Reply

Marsh Posté le 27-04-2010 à 22:39:06   

Reply

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

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

Reply

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 .

Reply

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 :o

 

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.


Message édité par Fred999 le 28-04-2010 à 13:48:39
Reply

Marsh Posté le 28-04-2010 à 13:52:02    

pour l'erreur c'est "error 41 operand types do not match operator"

Reply

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) ?


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 29-04-2010 à 09:10:17    

ayoubitou a écrit :

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 .


 
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;              


Message édité par antac le 29-04-2010 à 09:10:49
Reply

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 .

Reply

Marsh Posté le 12-05-2010 à 09:04:12    

Ajoute les parentheses qui manquent dans le calcul de x1, x2.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed