Forum Clubic

Program prob else

Bonjour voila je suis nouveau ici et je suis en première année d’etude de programmation et comme tout le monde je nageeeeeee!!!!!!!

Voila je dois crée un programme sur base du calcule de l’aire du triangle du cercle et du trapeze pour cela je dois faire les 3 en Un tout sa en turbo pascal donc voici mon programme.

Mon problème ce trouve au niveau du changement de programme entre mes 3 programme j’ai inséré des "else " pour que le programme puisse choisir mais il me marque a chaque fois
error 113: in the statements.

voila je voudrai bien savoir si vous avez des solutions a me proposé svp !
donc voici le fameux programme :

program choix_3form;
uses crt;
var choix,b,htriangl,airetriangl,gb,pb,htrapez,airetrapez,airecercl,rayon:real;
const pie=3.1416;

begin
 clrscr;
 writeln('________________________________');
 writeln('                                ');
 writeln('choissisez entre ces 3 programme');
 writeln('  1 triangle 2 trapez 3 cercle  ');
 writeln('                                ');
 writeln('________________________________');
 writeln('choix =');
 read(choix);
 if (choix<1) or (choix>3) then
  begin
   write('Votre choix ne peut etre que 1 pour le triangle 2 pour le trapez ou 3 pour le cercle');
  end
 else
  if choix=1 then
   begin
    write('base du triangle=');
    read(b);
    if b<=0 then
     begin
      write('Impossible que la base soit plus petite ou egale a zero');
     end
    else
     begin
      write('Hauteur du triangle=');
      read(htriangl);
      if htriangl<=0 then
       begin
        write('Impossible que la hauteur soit plus petite ou egale a zero');
       end
      else
       begin
        airetriangl:=((b*htriangl)/2);
        writeln('Aire du triangle=',airetriangl);
       end;
else
   if choix=2 then
    begin
     write('grande base=');
     read(gb);
     if gb<=0 then
      begin
       write('Impossible que Gb soit plus petit ou egale a zero');
      end
     else
      begin
       write('Petite base=');
       read(pb);
       if pb<=0 then
        begin
         write('Impossible que pb soit plus petit ou egale a zero');
        end
       else
        begin
         write('Hauteur trapeze =');
         read(htrapez);
         if htrapez<=0 then
          begin
           write('La hauteur ne peut pas ˆtre plus petite ou egale a zero');
          end
         else
          begin
           airetrapez:=((gb+pb)*htrapez)/2;
           writeln('L''aire du trapeze=',airetrapez);
          end;
else
  if choix=3 then
   begin
    write('Rayon=');
    read(rayon);
    if rayon<=0 then
     begin
      write('Impossible que le rayon soit negatif ou egale a zero');
     end
   else
    begin
     airecercl:=pie*(rayon*rayon);
     writeln('L''aire du cercle=',airecercl);
    end
   end;
  end;
 end;
end;
end;
end;
end.

Hum

tu devrais commencer par indenter ton code. Aussi:
Vers la fin, tu as “writeln(‘L’‘aire du cercle=’,airecercl);”, et après un end sans point virgule…

Effectivement, une bonne indentation est le secret d’une bonne lecture… :wink:

Je ne sais pas en quel langage c’est écrit, mais à mon avis il y a un petit problème au niveau de l’imbrication des IF…THEN…ELSE.
Je te propose donc ma version ci-dessous, en espérant que ça marche… :wink:
J’éai ajouté des commentaires (entourés de “###”) aux lignes modifiées ou ajoutées.


program choix_3form;
uses crt;
var choix,b,htriangl,airetriangl,gb,pb,htrapez,airetra
pez,airecercl,rayon:real;
const pie=3.1416;

begin
clrscr;
writeln('________________________________');
writeln('                                ');
writeln('choissisez entre ces 3 programme');
writeln('  1 triangle 2 trapez 3 cercle  ');
writeln('                                ');
writeln('________________________________');
writeln('choix =');
read(choix);

if (choix<1) or (choix>3) then
  begin
    write('Votre choix ne peut etre que 1 pour le triangle 2 pour le trapez ou 3 pour le cercle');
  end
else
  begin '### Je ne sais pas si nécessaire, mais je l'ai ajouter pour faire comme dans le reste du code... ###
    if choix=1 then
      begin
        write('base du triangle=');
        read(b);
        if b<=0 then
          begin
            write('Impossible que la base soit plus petite ou egale a zero');
          end
        else
          begin
            write('Hauteur du triangle=');
            read(htriangl);
            if htriangl<=0 then
              begin
                write('Impossible que la hauteur soit plus petite ou egale a zero');
              end
            else
              begin
                airetriangl:=((b*htriangl)/2);
                writeln('Aire du triangle=',airetriangl);
              end '### je l'ai ajouté ###
            end;
          end '### je l'ai ajouté ###
        end; '### je l'ai ajouté ###
      end '### je l'ai ajouté ###
    else
      begin '### ajouté pour faire comme dans le reste du code ###
        if choix=2 then
          begin
            write('grande base=');
            read(gb);
            if gb<=0 then
              begin
                write('Impossible que Gb soit plus petit ou egale a zero');
              end
            else
              begin
                write('Petite base=');
                read(pb);
                if pb<=0 then
                  begin
                    write('Impossible que pb soit plus petit ou egale a zero');
                  end
                else
                  begin
                    write('Hauteur trapeze =');
                    read(htrapez);
                    if htrapez<=0 then
                      begin
                        write('La hauteur ne peut pas ˆtre plus petite ou egale a zero');
                      end
                    else
                      begin
                        airetrapez:=((gb+pb)*htrapez)/2;
                        writeln('L''aire du trapeze=',airetrapez);
                      end '### je l'ai ajouté ###
                    end;
                  end '### je l'ai ajouté ###
                end; '### je l'ai ajouté ###
              end '### je l'ai ajouté ###
            end; '### je l'ai ajouté ###
          end '### je l'ai ajouté ###
        else
          begin '### ajouté pour faire comme dans le reste du code ###
            if choix=3 then
              begin
                write('Rayon=');
                read(rayon);
                if rayon<=0 then
                  begin
                    write('Impossible que le rayon soit negatif ou egale a zero');
                  end
                else
                  begin
                    airecercl:=pie*(rayon*rayon);
                    writeln('L''aire du cercle=',airecercl);
                  end
                end;
              end '### je l'ai ajouté ###
            end;
          end '### je l'ai ajouté ###
        end;
      end '### je l'ai ajouté ###
    end;
  end '### je l'ai ajouté ###
end; ### à supprimer ###
end; ### à supprimer ??? ###
end.

Si tu n’es pas obligé de mettre les “BEGIN” et “END” dans IF…THEN…ELSE, alors supprime-les, tu gagneras grandement en lisibilité !

program choix_3form;
uses crt;
var choix,b,htriangl,airetriangl,gb,pb,htrapez,airetra
pez,airecercl,rayon:real;
const pie=3.1416;

begin
clrscr;
writeln('________________________________');
writeln('                                ');
writeln('choissisez entre ces 3 programme');
writeln('  1 triangle 2 trapez 3 cercle  ');
writeln('                                ');
writeln('________________________________');
writeln('choix =');
read(choix);

if (choix<1) or (choix>3) then
    write('Votre choix ne peut etre que 1 pour le triangle 2 pour le trapez ou 3 pour le cercle');
else
    if choix=1 then
        write('base du triangle=');
        read(b);
        if b<=0 then
            write('Impossible que la base soit plus petite ou egale a zero');
        else
            write('Hauteur du triangle=');
            read(htriangl);
            if htriangl<=0 then
                write('Impossible que la hauteur soit plus petite ou egale a zero');
            else
                airetriangl:=((b*htriangl)/2);
                writeln('Aire du triangle=',airetriangl);
            end;
        end; '### je l'ai ajouté ###
    else
        if choix=2 then
            write('grande base=');
            read(gb);
            if gb<=0 then
                write('Impossible que Gb soit plus petit ou egale a zero');
            else
                write('Petite base=');
                read(pb);
                if pb<=0 then
                    write('Impossible que pb soit plus petit ou egale a zero');
                else
                    write('Hauteur trapeze =');
                    read(htrapez);
                    if htrapez<=0 then
                        write('La hauteur ne peut pas ˆtre plus petite ou egale a zero');
                    else
                        airetrapez:=((gb+pb)*htrapez)/2;
                        writeln('L''aire du trapeze=',airetrapez);
                    end;
                end; '### je l'ai ajouté ###
            end; '### je l'ai ajouté ###
        else
            if choix=3 then
                write('Rayon=');
                read(rayon);
                if rayon<=0 then
                    write('Impossible que le rayon soit negatif ou egale a zero');
                else
                    airecercl:=pie*(rayon*rayon);
                    writeln('L''aire du cercle=',airecercl);
                end;
            end;
        end;
    end;
end.

Salut! je crois q c’est tres bien le if then else; mais tu sais a ta place j’aurais choisi d’utiliser le CASE. c’est bcp mieux q le if then else imbriqué et serais mieux adapté au cas ou tu desirais calculé l’aire d’autres formes géometrique.

Et puis en faisant des fonctions dédiées à chaque calcul, tu y gagneras en lisibilité…

C’est du Pascal, il a besoin de begin et end comme en ADA.
Bon moi je placerais le code de saisie dans une répétitive do while et j’ajouterais une condition de sortie. Ensuite traiter les cas par un case et appeler des fonctions dédiées aux calculs.

Merci beaucoup pour vos reponse j’ai trouver le problème il venait juste des end;

Avant mes else il m’en manqué a chaque fois un.

ki utilise encore le pascal ?? lol

vos profs pourraientt au moins vous apprendre le java , car le pascal est destiné à finir entre 4 planches de sapins :miam:

perso, j’aurai utiliser un switch, ca ne tient qu’à moi :ange:

C’est sur mais ici le but est d’apprendre l’algorithmique, pas forcement un langage qui leur sera utile… Et je les vois mal commencer par de la programmation objet :slight_smile:

Moi aussi à l’école on a commencé à me faire apprendre le pascal. Je trouve ça dommage puisque on pourrait utiliser le C pour commencer (les bases sont facile).

Heuu, c’est peut-être con, mais pourquoi pas utiliser une structure switch???


switch(choix)
{
  case 1:
    // Traitement cas triangle
    break;

  case 2:
    // Traitement trapèze
    break;

  case 3:
    // Traitement cercle
    break;

  default:
    // Erreur saisie choix
    break;
}

Bon, là c’est en C, mais àa existe aussi en Pascal, et c’est beaucoup plus propre que des if…else à répétition