> Tous les forumsAutres langages

 demande d'aide en langage C.
Statut du sujet : NON RESOLU Imprimer
 youry_gagarine
  Posté le 28/01/2004 @ 16:04  
 Petit astucien

4 Messages
salut, pourriez-vous m'aider à voir plus clair dans la rédaction de ce petit programme en C: Ecrire un programme qui,à partir d'une date donnée détermine le jour de cette date dans l'année. 1-la date doit être une structure de type date ainsi définit: struct date{ int jour; int mois; int année } 2-le programme devra tenir compte des années bissextiles ou le mois de fevrier compte 29 jours. 3-le programme devra contenir une module(fonction)pour déterminer si une année est bissextiles ou pas et une module pour le renvoie du nombre de jours dans un mois tenant compte si l'année est bissextiles ou pas. 4-le programme devra donner à l'utilisateur la possibilité de continuer tant que celui-ci le suohaitera. merci d'avance de votre aide.
 Afficher le profil de youry_gagarineEnvoyer un message privé à youry_gagarine
 
 
Publicité
 koala01  Posté le 29/01/2004 à 16:31  
Astucien

4715 Messages
l'idéal serait de partir d'une date bien définie... par exemple, définir comme point de départ le premier janvier 1980 comme étant un mardi (je n'ai pas les dates antérieures [clindoeil] Au départ de là, il faut compter le nombre de jour qui séparent la date introduite de la date de référence. je créerais d'abord un vecteur moisnombre, un autre moisnom et un dernier semaine: moisnombre[31,0,31,30,31,30,31,31,30,31,30,31] moisnom[janvier,fevrier,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,decembre] semaine[mardi,mercredi,jeudi,vendredi,samedi,dimanche,lundi] Tu remarquera que le nombre de jours de février est défini au départ à 0... la raison est simple: ca change en fonction des années bisextiles [clindoeil] tu remarquera aussi que le vecteur semaine commence au mardi (le jour du premier janvier 1980) la vérification des années bisextiles devrait se faire selon le principe suivant: [code]si (modulo(annee,4) <>0) { moisnombre[2]=28 } sinon { si (modulo(annee,100)<>0) { moisnombre[2]=29 } sinon { si (modulo(annee,400)<>0) { moisnombre[2]=28 } sinon { moisnombre[2]=29 } } }[/code] pourquoi [question] une année bisextile est une année divisible par quatre, sauf si elle est divisible par 100, et encore, car les années divisibles par 400 le sont... Si donc, le modulo (le reste de la division) de l'année par 4 est égal à 0, on a affaire à une année bisextile, sauf si le modulo de l'année par 100 est égal à 0...à moins que le modulo de l'année par 400 soit égal à 0 [langue][langue] puis il s'agit de faire le calcul du nombre de jour... (là, ca va être plus dur) la première chose à faire est de voir si la date introduite est plus ancienne ou plus récente que la date de référence...du genre si (annee<1980) { la date introduite est plus petite } Ensuite, on compte le nombre de jours des années COMPLETES qui séparent la date introduite de la date de référence [code] pour chaque année complete { pour (i=1 à 12) { (vérification du nombre de jours de février) total=total+moisnombre[i] } } [/code] il faut donc ne pas prendre l'année introduite [clindoeil]... exemple: si on introduit la date 16/01/1972,il ne faudra pendre que les années 1973,1974,1975,1976,1977,1978,1979 de meme, si on introduit le 29/12/2004, il ne faudra pas prendre l'année 2004 en compte (en veillant à ce que le total soit au départ à 0 [clindoeil]) puis, on vérifie le nombre de jours des mois COMPLETS de l'année incomplete... pour la premiere date donnée en exemple, il faut donc prendre de février à décembre, pour la seconde, il faut prendre de janvier à novembre... toujours selon le meme principe: [code] pour chaque mois complet { total=total+moisnombre[numéro du mois complet] } Enfin, on vérifie le nombre de jour du mois incomplet: total=total+moisnombre[numéro du mois]-jour si la date introduite est antérieur, et total=total+jour si la date introduite est postérieur... Il ne restera plus qu'à faire le modulo du total par 7...et à voir quel jour ca donne Bien sur, le tout doit etre mis dans une boucle qui vérifie si l'utilisateur voulait continuer ou non... Je t'ai donné le principe, car, il faut quand meme que tu travaille un (tout) petit peu sur ton code [clindeoil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 youry_gagarine  Posté le 29/01/2004 à 16:49  
Petit astucien

4 Messages
salut koala01 merci de m'avoir apporté toutes ces explications combien intéressantes et d'avoir pris ton temps de m'aider. mille merci!!!!!!!!! youry
Afficher le profil de youry_gagarineEnvoyer un message privé à youry_gagarine
 Revenir en haut de la page
 koala01  Posté le 29/01/2004 à 22:32  
Astucien

4715 Messages
juste une petite précision (une petite modification en fait): Les tableaux/vecteurs, en C (comme en C++, d'ailleurs) commencent avec un index de 0 ... ====> Ce qui fait que janvier se trouve en moisnom[0] Du coup, ben, il faut lire: pour les jours de février moisnombre[1] pour la boucle: pour (i=0 à 11) pour les mois: moisnombre[numéro du mois complet -1] et moisnombre[ numéro du mois -1]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 koala01  Posté le 29/01/2004 à 22:34  
Astucien

4715 Messages
(pour la petite histoire, j'ai du récemment créer un logaritme qui permettait sensiblement la meme chose... c'est ainsi que j'ai su te le donner sans trop y réfléchir [clindoeil])
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page