Votre question

Petit calendrier

Tags :
  • finale
  • Programmation
Dernière réponse : dans Programmation
10 Mars 2010 18:13:49

jai un souci avec une fonction qui demande une date de depar avec le jour et le mois et on doit charcher une finale sachant que la duree separant ces deux dates est de 45 jours
voici ce que j'ai essayé de faire

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4.  
  5. main()
  6. {
  7.  
  8. int m; // representant le mois
  9. int b;// compteur de jour;
  10. int maxj;// jour maximal dun mois donné
  11. int a;// premier jour de projection
  12. int j;// representant le jour final
  13.  
  14. do
  15. {
  16. printf("entre le premier mois\n");
  17. scanf("%d",&m);
  18. }
  19. while(m<1||m>12);
  20.  
  21. if(m==1||m==3||m==5||m==7||m==8||m==10||12)
  22. {
  23.  
  24. do
  25. {
  26. printf("entre le premier jour\n");
  27. scanf("%d",&a);
  28. }
  29. while(a<1||a>31);
  30. }
  31.  
  32.  
  33. else if(m==2)
  34. {
  35. do
  36. {
  37. printf("entre le premier jour\n");
  38. scanf("%d",&a);
  39. }
  40. while(a<1||a>28);
  41. }
  42.  
  43. else
  44. {
  45. do
  46. {
  47. printf("entre le premier jour\n");
  48. scanf("%d",&a);
  49. }
  50. while(a<1||a>30);
  51. }
  52.  
  53. printf("le premier jour est %d/%d\n",a,m);
  54.  
  55. b=a+45;
  56.  
  57. do
  58. {
  59.  
  60. if(m==1||m==3||m==5||m==7||m==8||m==10||12)
  61. {
  62. maxj=31;
  63. }
  64.  
  65. else if(m==2)
  66. {
  67. maxj=28;
  68. }
  69.  
  70. else
  71. {
  72. maxj=30;
  73. }
  74.  
  75. j=b-maxj;
  76.  
  77. if(j>maxj)
  78. {
  79. m=m+1;
  80. }
  81. else
  82. {
  83. printf("\n");
  84. }
  85.  
  86. }
  87. while(j<maxj);
  88.  
  89. printf("la date finale est %d/%d\t",j,m);
  90.  
  91. system("pause");
  92. }

Autres pages sur : petit calendrier

10 Mars 2010 18:44:39

Salut,
je suppose que ton programme est en C++... quelles difficultés rencontres-tu ?
m
0
l
10 Mars 2010 18:58:43

oui cest en c++, lorsque j'ajoute 45 au jour de depart , la fonction change de mois comme voulu mais le jour non pourtant jai fais un controle de saisie, je me retrouve avec un jour superieur au jour max d'un mois par exemple avec 40 or fevrier termine a 28
m
0
l
Contenus similaires
a b L Programmation
10 Mars 2010 20:38:34

Il faut poster dans des tag de code, là c'est illisible.
m
0
l
a c 232 L Programmation
11 Mars 2010 21:21:21

j'ai arrangé ça
m
0
l
a b L Programmation
12 Mars 2010 20:23:09

Bon, j'ai rapidement lu, et déjà il y a de l'optimisation à faire car tu pourrais utiliser maxj pour lire le premier jour.

Ensuite, je vois ça:
# j=b-maxj;
#
# if(j>maxj)
# {

Le test (j > maxj) est équivalent à est équivalent à (b - maxj > maxj), équivalent à (b > 2 * maxj) soit (a + 45 > 2 * maxj), ce qui n'a aucun sens.
En fait, tu cherches juste à savoir si tu as dépassé le mois, c'est à dire si (b > maxj) équivalent à (j > 0).
Ensuite, tu incrémentes m si tu dépasse le mois, c'est bon, mais il faut ensuite penser à la boucle suivante, c'est à dire qu'il faut mettre dans b: b - maxj.

Enfin, pour avoir une bonne vue de ton algo, utilise des noms plus parlant, par exemple:
en remplaçant maxj par nombreMaxJoursDuMoisCourant
en remplaçant b par jourFinalDuMoisCourant
en utilisant jourFinalDuMoisSuivant = jourFinalDuMoisCourant - nombreMaxJoursDuMoisCourant
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS