Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2544 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Incrementation +4

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Incrementation +4

n°1504183
adrenaline​001
Posté le 17-01-2007 à 14:25:56  profilanswer
 

Bonour, je doit ecrire un programme pour calculer le nombre de jours entre 2 dates et je n'en suis encore qu'au debut.
J'utilise une fonction scanf pour entrer une date (JJ MM AAAA) et j'aimerais que le programme s'arrete si la date indiquee n'existe pas.
C'est chose faite si MM>12 mais commes chaque mois a un nombre de jours qui varie je me demandais s'il etait possible d'ecrire
une condition reprenant tout les mois qui comptent 31 jours et une autre comprenant tout les mois qui comptent 30 jours avec une condition speciale pour fevrier.
 
Est ce que  
if (MM=1, MM=3, MM=5, MM=7, MM=8, MM=10, MM=12) est juste
 
 
Excusez moi pour le peu de clarter dans ce message mais j'ai encore beaucoup de mal a m'exprimer en langage C

mood
Publicité
Posté le 17-01-2007 à 14:25:56  profilanswer
 

n°1504189
TheFox37
pourtant chez moi, ça marche
Posté le 17-01-2007 à 14:33:35  profilanswer
 

Salut!
 
une solution simple serait de faire un tableau contenant le nombre de jour de chaque mois, et ensuite de vérifier si JJ est inférieur ou égale à Tableau[MM].
 
EDIT : attention toutefois aux années bissextiles  :D


Message édité par TheFox37 le 17-01-2007 à 14:35:36

---------------
Mon FeedBack Ebay
n°1504306
-ThX-
Not here anymore
Posté le 17-01-2007 à 17:33:39  profilanswer
 

C'est possible

 
Code :
  1. int JJ; // jour
  2. int MM; // mois
  3. int AAAA; // année
  4. int J; // Jour max pour le mois ( voir code suivant )
  5. switch (MM) {
  6. case 1: case 3: case 5: case 7: case 8: case 10: case 12:
  7.    J=31;
  8.    break;
  9. case 4: case 6: case 9: case 11:
  10.    J=30;
  11.    break;
  12. case 2:
  13.   J=((AAAA%4 == 0 && AAAA%100 != 0) || AAAA%400 == 0) ?29 :28;
  14.    break;
  15. default:
  16.    // ne devrait pas arriver
  17. }
  18. if (JJ>J) printf("Erreur, jour incorrect" );

Message cité 1 fois
Message édité par -ThX- le 17-01-2007 à 23:47:41
n°1504454
Ange_blond
Posté le 17-01-2007 à 23:39:41  profilanswer
 

Si tu tiens à garder ton test IF (bien que le switch soit efficace ici) tu peux ajouter des conditions OU ||
 
if(truc || bidulle || machin)...

n°1504458
Sve@r
Posté le 17-01-2007 à 23:45:00  profilanswer
 

-ThX- a écrit :

Code :
  1. J=(AAAA%4 == 0 && AAAA%400 != 0) ?29 :28;



Petite erreur, une année bissextile est (divisible par 4 et non divisible par 100) ou divisible par 400 (1900 n'était pas bissextile, 2000 l'a été)
Ton test donne comme bissextile une année divisible par 4 et pas par 400 (il donne 1900 comme bissextile et pas 2000)
 

Code :
  1. J=((AAAA%4 == 0 && AAAA%100 != 0) || AAAA%400 == 0) ?29 :28;



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1504460
-ThX-
Not here anymore
Posté le 17-01-2007 à 23:47:54  profilanswer
 

Corrigé, merci sve@r


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Incrementation +4

 

Sujets relatifs
Incrémentation successive[PHP : facile je pense] Fichiers en php et incrementation de variables
[Excel VBA] Compteur - incrémentationVariables et incrementation => Vous trouvez ca normale ?
Incrementation dans mysqlincrémentation
problème d'incrémentation[Résolu] Mauvaise incrémentation du NumeroAuto dans Access
incrementation d'une variable ($var1, $var2, $var3, ...)Incrémentation aléatoire !
Plus de sujets relatifs à : Incrementation +4


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)