Le C et un défi ^^

YAAATAAAA -  
Rocksy Messages postés 514 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voilà je suis en train d'étudier le C et on m'a mis à l'epreuve:

Il faudrait que je creer un logiciel qui serait capable de me dire quel jour nous etions à une date précise!

C'est des math pur et dur!

Je suis née le 25/10/93, ca fait 5134 jour, ça fait si mon calcul est bon 733 semaines (5134/7)

Mais là pour trouver le chiffre entre 1 et 7 (le jour de la semaine où nous serions) je bloque !!! aider moi SVP

3 réponses

YAAATAAAA
 
up plzzzzzzzzzzzzzzzzzzz
0
lenrok Messages postés 1442 Statut Membre 376
 
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...
0
Rocksy Messages postés 514 Date d'inscription   Statut Membre Dernière intervention   73
 
Bonsoir,

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();
}
0