Le C et un défi ^^
Fermé
YAAATAAAA
-
15 déc. 2007 à 22:40
Rocksy Messages postés 509 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 31 décembre 2007 - 15 déc. 2007 à 23:15
Rocksy Messages postés 509 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 31 décembre 2007 - 15 déc. 2007 à 23:15
3 réponses
lenrok
Messages postés
1404
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
12 décembre 2009
376
15 déc. 2007 à 23:08
15 déc. 2007 à 23:08
Bonjour YAAATAAAA,
La gestion du temps sous C est géré par des fonctions de type gmtime.
Le but de cette fonction est de remplir une structure tm avec les informations obtenue avec la fonction time.
struct tm
{
int tm_sec ; // secondes 0 - 59
int tm_min ; // minutes 0 - 59
int tm_hour ; // heure 0 - 23
int tm_mday ; // jour du mois 1 - 31
int tm_mon ; // mois de l'année 0 - 11
int tm_year ; // année par rapport à 1900
int tm_wday ; // jour par rapport à dimanche 0 - 6
int tm_yday ; // jour par rapport au 1° janvier 0 -365
int tm_isdst ; // heure d'été
}
Si la date est antérieur à 1980, la fonction renvoie NULL.
Maintenant, à toi de jouer.
Ce défi, c'est à toi de le surmonter.
Bon courage...
La gestion du temps sous C est géré par des fonctions de type gmtime.
Le but de cette fonction est de remplir une structure tm avec les informations obtenue avec la fonction time.
struct tm
{
int tm_sec ; // secondes 0 - 59
int tm_min ; // minutes 0 - 59
int tm_hour ; // heure 0 - 23
int tm_mday ; // jour du mois 1 - 31
int tm_mon ; // mois de l'année 0 - 11
int tm_year ; // année par rapport à 1900
int tm_wday ; // jour par rapport à dimanche 0 - 6
int tm_yday ; // jour par rapport au 1° janvier 0 -365
int tm_isdst ; // heure d'été
}
Si la date est antérieur à 1980, la fonction renvoie NULL.
Maintenant, à toi de jouer.
Ce défi, c'est à toi de le surmonter.
Bon courage...
Rocksy
Messages postés
509
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
73
15 déc. 2007 à 23:15
15 déc. 2007 à 23:15
Bonsoir,
Le code complet:
Le code complet:
#include <stdlib.h>
#include <stdio.h>
#include <io.h>
#include <math.h>
#include <conio.h>
int toto;
// Acquisition d'une nombre
void nbr()
{
char caract;
char tab[99];
int ptr=0;
while (caract!='\r')
{
caract=getch();
if (caract>='0' && caract <='9')
{
tab[ptr]=caract;
ptr=ptr+1;
tab[ptr]='\0';
printf("%c",caract);
}
if (caract=='\b')
{
if (ptr>0)
{
ptr=ptr-1;
printf("\b \b");
}
}
}// Fin du while (caract!='\r')
toto=atoi(tab);
} // Fin du int nbr
void main()
{
/*Variable du main*/
int annee; //Acquisitiondeladate
int mois; //Acquisitiondumois
int jour; //Acquisitiondujours
int mem_jour;
int mem_mois;
int mem_annee;
int jour_fixe=1;
int mois_fixe=1;
int annee_fixe=2006;
int nbr_jour=31; //Nbrdejourdanslemois
int jour_semaine=7; //Lejourdelasemaine
int err=0;
//clrscr();
printf("Saisir l annee = ");
nbr();
annee=toto;
printf("\n\rSaisir le mois = ");
nbr();
mois=toto;
printf("\n\rSaisir le jour = ");
nbr();
jour=toto;
mem_annee=annee;
mem_mois=mois;
mem_jour=jour;
printf("\n\rannee= %i / mois =%i / jour =%i",annee,mois,jour);
if(mois>12)err=1;
if(mois<1)err=1;
switch(mois)
{
case 4: nbr_jour=30;
break;
case 6: nbr_jour=30;
break;
case 9: nbr_jour=30;
break;
case 11: nbr_jour=30;
break;
case 2: if(annee%100==0)
{
if(annee%400==0)
{
nbr_jour=29;
}//Finduif(annee%400==0)
else
{
nbr_jour=28;
}
}//Finduif(annee%100==0)
else
{
if(annee%4==0)
{
nbr_jour=29;
}//Finduif(annee%4==0)
else
{
nbr_jour=28;
}
}//Finduelseif(annee%100==0)
break;
default: nbr_jour=31;
}//Finduswitch(mois)
if(jour<1) err=1;
if(jour>nbr_jour) err=1;
/*Calculdujour*/
if(err==0)
{
while(jour!=jour_fixe)
{
if(jour<jour_fixe)
{
jour=jour+1;
jour_semaine=jour_semaine+1;
}
if(jour>jour_fixe)
{
jour=jour-1;
jour_semaine=jour_semaine+1;
}
}
while(mois!=mois_fixe)
{
if(mois<mois_fixe)mois=mois+1;
if(mois>mois_fixe)mois=mois-1;
nbr_jour=31;
switch(mois)
{
case 4: nbr_jour=30;
break;
case 6: nbr_jour=30;
break;
case 9: nbr_jour=30;
break;
case 11: nbr_jour=30;
break;
case 02: if(annee%100==0)
{
if(annee%400==0)
{
nbr_jour=29;
}//Finduif(annee%400==0)
else
{
nbr_jour=28;
}
}//Finduif(annee%100==0)
else
{
if(annee%4==0)
{
nbr_jour=29;
}//Finduif(annee%4==0)
else
{
nbr_jour=28;
}
}//Finduelseif(annee%100==0)
break;
default: nbr_jour=31;
}//Finduswitch(mois)
jour_semaine=jour_semaine+nbr_jour;
}
while(annee!=annee_fixe)
{
nbr_jour=365;
if(annee%100==0)
{
if(annee%400==0)
{
nbr_jour=366;
}//Finduif(annee%400==0)
else
{
nbr_jour=365;
}
}//Finduif(annee%100==0)
else
{
if(annee%4==0)
{
nbr_jour=366;
}//Finduif(annee%4==0)
else
{
nbr_jour=365;
}
}//Finduelseif(annee%100==0)
if(annee<annee_fixe)
{
annee=annee+1;
jour_semaine=jour_semaine-nbr_jour;
}
if(annee>annee_fixe)
{
annee=annee-1;
jour_semaine=jour_semaine+nbr_jour;
}
}
//jour_semaine=jour_semaine-mem_mois;
if(jour_semaine<0)
{
while(jour_semaine<=0)
{
jour_semaine=jour_semaine+7;
}
}
else
{
while(jour_semaine>7)
{
jour_semaine=jour_semaine-7;
}
}
printf("\n\rC est un ");
if (jour_semaine==0) jour_semaine=7;
if (jour_semaine==8) jour_semaine=1;
switch(jour_semaine)
{
case 1: printf("Lundi");
break;
case 2: printf("Mardi");
break;
case 3: printf("Mercredi");
break;
case 4: printf("Jeudi");
break;
case 5: printf("Vendredi");
break;
case 6: printf("Samedi");
break;
case 7: printf("Dimanche");
break;
}
}
else
{
printf("\n\rDate incorrect");
}
getch();
}