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
Configuration: Windows XP
Firefox 2.0.0.11

3 réponses

  1. 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
  2. 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