2 votes

Calcul de la date suivante en Turbo Pascal

program date;
uses wincrt;

var
m,ch,ch1,ch2,ch3: string ;
mois,j,a,b: integer ;

begin
write('a');read(a);
write('j');read(j);
write('mois');read(mois);
case mois of
1,3,5,7,8,10: if j<31 then
                          begin
                          b:=j+1;
                          m:=str(b,ch)+'/'+str(mois,ch2)+'/'+str(a,ch3);
                          else  if j=31then
                          b:=1;
                          s:=mois+1;
                          m:=concat(str(b,ch),'/',str(s,ch2),'/',str(a,ch3));
                          end
                          else m:='erreur';    
4,6,9,11:if j<30 then
                 begin
                 b:=j+1;
                 m:=concat(str(b,ch),'/',str(mois,ch2),'/',str(a,ch3));
                 end                         
                 else j=30 then
                 begin
                 b:=1;
                 s:=mois+1;
                 m:=concat(str(b,ch),'/',str(mois,ch2),'/',str(a,ch3));
                 end
                 else m:='erreur';
2:if j<28 then
      begin
      b:=j+1;
      m:=concat(str(b,ch),'/',str(mois,ch2),'/',str(a,ch3));
      end
      else if j=28 then
      begin
      b:=1;
      m:=concat(str(b,ch),'/',str(mois,ch2,'/',str(a,ch3));
      end
      else if((a mod 4=0)AND (a mod 100<>0)) or ((a mod 100=0)and(a mod 400=0)) then
               if j<29 then
               begin
               b:=j+1;
               m:=concat(str(b,ch),'/',str(mois,ch2,'/',str(a,ch3));
               end
               else if j=29 then
               begin
               b:=1;
               m:=concat(str(b,ch),'/',str(mois,ch2,'/',str(a,ch3));
               end
               else m:='erreur';
12:if j<31 then
     begin
     b:=j+1;
     m:=concat(str(b,ch),'/',str(mois,ch2,'/',str(a,ch3));
     end
     else if j=31 then
     begin
     b:=1;
     s:=a+1;
     m:=concat(str(b,ch),'/',str(mois,ch2,'/',str(s,ch3));
     end;       
writeln(m);
end.     

Voici mon programme, j'espère que vous pourrez m'aider.

2voto

Il peut être judicieux d'indenter le code en fonction des blocs de début et de fin. Cela permet de repérer très facilement les instructions de début et de fin non appariées.

m:=str(b,ch)+'/'+str(mois,ch2)+'/'+str(a,ch3);

Il y a longtemps que je n'ai pas fait quelque chose avec Turbo Pascal, mais si je me souviens bien, str est une procédure. Elle ne renvoie donc rien.

Afin de simplifier votre programme, il peut être judicieux de ne calculer les nouvelles variables "b", "mois" et "a" qu'à l'intérieur du bloc de cas. Et ensuite faire la transformation en chaîne de caractères une fois après le bloc de cas.

str(b, ch);
str(mois, ch2);
str(a, ch3);
m := ch + '/' + ch2 + '/' + ch3;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X