Bonjour !,
"Ecrire un programme en c, qui saisit une date quelqonque, et affiche la date du lendemain.
Exemples:
08/01/2006 => 09/01/2006
28/02/2006 => 01/03/2006
31/12/2005 => 01/01/2006"
Voila l'enoncé de mon exercice !
et voila mon travail :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <cstdlib>
#include <iostream>
 
int main()
{
    int j, m, a;
    /* Demande de saisie de données avec un test pour chaqu'une */
    do
    {
        printf("Veillez entrez le MOIS\n");
        scanf("%d",&m);
    }
 
    while ( m<1 || m>12 );
     /*On demande le mois en 1er, car suivant m on va tester j */
 do
    { 
        printf("Veillez entrez le JOUR (attention au nombre max des jours de chaque mois)\n");
        scanf("%d",&j);
    }
    while (( j<1 || j>31 )||((m == 2 || m == 4 || m == 7 || m == 9 || m == 11 ) && j == 31 )||(m==2 && j>=29));
 
  /*la boucle précedente reaffiche le message si on entre un nombre
   de jours 31 pour un mois de 30 jours 
   ou plus que 28 pour fevrier... */
    do
    {
    printf("Veillez entrez l'ANNEE\n");
    scanf("%d",&a);
    }
    while ( a<0 ) ;
 
    /* Si c'est le dernier jours du dernier mois, on change d'année */
    if ( j == 31 && m == 12 )  
    { 
         j=1 ;
         m=1 ;
         a++ ;
         printf("Youpi ! c'est le reveillant !!! \n");
    }
    else
    /* on teste si c'est le dernier jour des mois qui contiennent 31 jours.
    Pas la peine de verifier si c'est un  mois de 31 jours ... 
    car si on a passer la boucle while de saisie de j avec j = 31 c'est que
    m est obligatoirement un mois de 31 jours*/
    if (j == 31 )
    {
            j = 1 ;
            m++ ; 
    }
        else
    /*On teste s'il s'agit du mois Fevrier*/
        if ( m == 2 && j==28 )
        {   
               j = 1 ;
                m++; 
            }           
        else 
    /* Le prochain if conserne que les mois qui contiennent 30 jours */    
    if ( (j == 30) && ( m==2 || m==4 || m==7 || m==9 || m==11) )
    {
        j = 1 ;
        m++ ;
    }
    else 
    /* Si on est dans aucun cas spécial, on incremente tout simplement j */
    j++ ;
    printf("la date du lendemain est %d/%d/%d\n",j,m,a);
    system("PAUSE");
}
Je me suis bien cassé la tete a faire ce bout de code ! La seulle "erreur" que j'ai pas traité volontairement c'est le cas des année bissextiles ou fevrier a 29 jours ... s'il y a quelqu'un pour me donner le fil chui preneur !
Merci d'avance !