IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Calcul de dates


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut Calcul de dates
    Bonsoir,

    J'ai un problème avec le langage C et plus exactement avec la date prochaine

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     #include<stdio.h>
    int main ()
     
    {
    int jr , nbj , mo , an,nbjm   ;
     
    printf("  La date prochaine :\n ");
    printf("====================\n\n");
     
    printf("Donner la date de debut :\n\n");
     
    printf(" Jour :");
    scanf("%d",&jr);
    printf("\n\n");     
     
    printf(" Mois :");
    scanf("%d",&mo);
    printf("\n\n");   
     
    printf(" Annee:");
    scanf("%d",&an); 
    printf("\n\n");   
     
    printf("Donner le nombre de jour a ajouter   :"); 
    scanf("%d",&nbj);
    printf("\n\n"); 
     
        switch(mo)
        {      
         case 4 :   case 6 : case 9  :  case 11 :
              nbjm =30 ;break ;
         case 2 : 
              if (an % 4 ==0)
               {    
              nbjm = 29 ;break ;
              } 
              else
     
              nbjm = 28 ;break ; 
     
         default : nbjm = 31 ;break ;
     
     
         } 
     
     jr = jr + nbj;
     
     
    if( jr > nbjm ) 
     
     
        do
    {
      {
     
     
     
          jr =  jr-nbjm ;
         mo = mo + 1   ;
     
       if(mo > 12 )
     
         {         
     
             mo = 1 ;
             an = an + 1 ;
          }   
       }       
     
      }  
     
    while(jr>nbjm);          
     
     
     
     
     
     
     
     
    printf ("La date est : %d/%d/%d\n\n",jr,mo,an);
     
         system("pause");
     
     
    }
    Le problème : quand j'ajoute 60 j à 27/02/2000, il m'a donne 29/4/2000

    Il m'a donné deux jours de plus
    Y a-t-il une solution ?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 179
    Par défaut
    Après un (très) rapide coup d’œil (les années bissextiles c'est pas tout à fait ça mais passons), j'ai juste une petite question : tu ne réactualises pas nbjm quand tu passes au mois suivant?

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    Citation Envoyé par pythéas Voir le message
    Après un (très) rapide coup d’œil (les années bissextiles c'est pas tout à fait ça mais passons), j'ai juste une petite question : tu ne réactualises pas nbjm quand tu passes au mois suivant?
    J'ai mis tous les cas possibles pour l'année .. l'année n'est pas un obstacle
    et pou nbjm sa ve dire nombre de jour de mois

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par peacee Voir le message
    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
     if( jr > nbjm ) 
           
        do
    {
      {
        
          
                
         jr =  jr-nbjm ;
         mo = mo + 1   ;
              
       if(mo > 12 )
             
         {         
     
             mo = 1 ;
             an = an + 1 ;
          }   
       }       
            
      }  
          
    while(jr>nbjm);  
    Le problème : quand j'ajoute 60 j à 27/02/2000, il m'a donne 29/4/2000

    Il m'a donné deux jours de plus
    Y a-t-il une solution ?
    Citation Envoyé par pythéas Voir le message
    Après un (très) rapide coup d’œil (les années bissextiles c'est pas tout à fait ça mais passons), j'ai juste une petite question : tu ne réactualises pas nbjm quand tu passes au mois suivant?

    Citation Envoyé par peacee Voir le message
    et pou nbjm sa ve dire nombre de jour de mois
    Ouais super.
    Donc déjà tu n'as même pas l'idée d'afficher tes variables pour voir ce qui se passe et tu préfères venir pleurer dans les forums en attendant qu'on les affiche pour toi. Et en plus tu ne fais même pas l'effort de lire les réponses !!!

    Tu as m=2 donc nbjm=29 et ne varie plus donc dans ta boucle tu enlèves toujours 29 à jr alors qu'il aurait fallu enlever à un moment donné 31 puisque tu es passé sur mars !!!

    Citation Envoyé par peacee Voir le message
    J'ai mis tous les cas possibles pour l'année .. l'année n'est pas un obstacle
    Oui bien sûr. T'as qu'à essayer de rajouter 3 à 27/02/2100 voir si tu tombes sur 2/3/2100...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouais super.
    Donc déjà tu n'as même pas l'idée d'afficher tes variables pour voir ce qui se passe et tu préfères venir pleurer dans les forums en attendant qu'on les affiche pour toi. Et en plus tu ne fais même pas l'effort de lire les réponses !!!

    Tu as m=2 donc nbjm=29 et ne varie plus donc dans ta boucle tu enlèves toujours 29 à jr alors qu'il aurait fallu enlever à un moment donné 31 puisque tu es passé sur mars !!!
    Merci pour votre réponse polie...
    dans l'ensemble je ne viens pas ici pour pleurer, un peu de respect s'il vous plaît
    j ai soulevé le problème parce que je n'ai pas trouvé sa solution
    en tout cas merci encore une fois, parce que j'ai trouvé la solution

    Citation Envoyé par Sve@r Voir le message
    Oui bien sûr. T'as qu'à essayer de rajouter 3 à 27/02/2100 voir si tu tombes sur 2/3/2100...
    non dsl il ma donner 01/03/2100

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par peacee Voir le message
    Merci pour votre réponse polie...
    Elle correspond à ce que je ressens quand je vois quelqu'un ne faisant même pas l'effort de lire (sous-entendu avec attention) les réponses qu'on lui fait.

    Citation Envoyé par peacee Voir le message
    dans l'ensemble je ne viens pas ici pour pleurer, un peu de respect s'il vous plaît
    j ai soulevé le problème parce que je n'ai pas trouvé sa solution
    Oui mais sans vraiment chercher non plus...

    Citation Envoyé par peacee Voir le message
    non dsl il ma donner 01/03/2100
    C'est bien ce que dit pythéas: tu gères mal les années bissextiles (pour info, 2100 n'est pas bissextile, ni 2200 ni 2300...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 12h13
  2. COUNT + Calcul de DATE
    Par cassi2 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/10/2004, 16h35
  3. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  4. SCRIPT CALCULANT LA DATE
    Par Redouane dans le forum ASP
    Réponses: 3
    Dernier message: 17/03/2004, 09h10
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo