Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JOUR A PARTIR D'UNE DATE MM/JJ/YYYY


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : dayfromdate, jourdate, jour, date, day Niveau : Expert Date de création : 11/04/2007 Date de mise à jour : 13/04/2007 17:15:24 Vu : 6 746

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

mon code sert pour savoir le jour a partir de la date exprimée sous la forme mm/jj/yyyy
mm : mois
jj : jour
yyyy : Annee
il prend en consideration que leapYear avant 1732 sont les multiples de 4 seulement!

 

Source

  • #include<stdio.h>
  • bool isleap(int n){
  • if(n<1732)
  • return (!(n%4));
  • return (!(n%4)&&(n%100))||!(n%400);
  • }
  • int mounths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  • char *days[7]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
  • char* M[]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
  • bool isvalide(int m,int d,int y){
  • if(d > 2 && d < 14 && m == 9 && y == 1752)
  • return false;
  • return ( d <= mounths[m]+isleap(y)*(m == 2) && m < 13 );
  • }
  • int main(){
  • int d,m,y;
  • printf("Enter the date that you want to know the correspondant day of week in this
  • form : mm dd yyyy\n mm:mounth \n dd : day\n yyyy:year\n");//ligne ajoutée en réponse a la demande de "ndubien"
  • scanf("%d%d%d",&m,&d,&y);
  • while(m != 0 && d != 0 && y != 0){
  • if(!isvalide(m,d,y))
  • printf("%d/%d/%d is an invalid date.\n",m,d,y);
  • else{
  • long L=0;
  • for(int i=1;i<y;i++)
  • L+=365+isleap(i);
  • for(int i=1;i<m;i++)
  • if(i == 2)
  • L+=28+isleap(y);
  • else
  • L+=mounths[i];
  • L+=d+4;
  • L-=11*((y>1752) || (y==1752 && m>9) ||(y==1752 && m==9 && d>2));
  • L%=7;
  • printf("%s %d, %d is a %s\n",M[m],d,y,days[L]);
  • }
  • scanf("%d%d%d",&m,&d,&y);
  • }
  • return 0;
  • }
#include<stdio.h>

bool isleap(int n){
    if(n<1732)
      return (!(n%4));
    return (!(n%4)&&(n%100))||!(n%400);
    }
int mounths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char *days[7]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
char* M[]={"","January","February","March","April","May","June","July","August","September","October","November","December"};


bool isvalide(int m,int d,int y){
   if(d > 2 && d < 14 && m == 9 && y == 1752)
     return false;
   return ( d <= mounths[m]+isleap(y)*(m == 2) && m < 13 );
   }
int main(){
   int d,m,y;
   printf("Enter the date that you want to know the correspondant day of week in this
form : mm dd yyyy\n mm:mounth \n dd : day\n yyyy:year\n");//ligne ajoutée en réponse a la demande de "ndubien" 

  
   scanf("%d%d%d",&m,&d,&y);
   while(m != 0 && d != 0 && y != 0){
       if(!isvalide(m,d,y))
         printf("%d/%d/%d is an invalid date.\n",m,d,y);
       else{
          long L=0;
          for(int i=1;i<y;i++)
             L+=365+isleap(i);
          for(int i=1;i<m;i++)
             if(i == 2)
               L+=28+isleap(y);
             else
               L+=mounths[i];
          L+=d+4;
          L-=11*((y>1752) || (y==1752 && m>9) ||(y==1752 && m==9 && d>2));

          L%=7;
          printf("%s %d, %d is a %s\n",M[m],d,y,days[L]);

      }
       scanf("%d%d%d",&m,&d,&y);
   }


   return 0;

}

Historique

13 avril 2007 17:15:25 :
réponse a la demande de "ndubien" :)

Commentaires et avis

signaler à un administrateur
Commentaire de ndubien le 11/04/2007 15:44:16

Bonjour,

Cette source est interressante mais présentes de nombreux problèmes :
- Si, à la place du mois, à la place du jour, ou à la place de l'année, on met un caractère autre qu'un nombre, le programme ne répond plus à aucunes commandes et ne peut s'arrêter qu'en exercant un clic sur la croix en haut à droite de la fenêtre (sous windows).
- De plus afin de rendre ce code plus captivant il serait préférable de dire à l'utilisateur ce qu'il est censé mettre (un mois, un jour, ou une année).

Malgré ces quelques critiques, ce code semble bien fonctionner et peut s'avérer interressant pour certains.

Au revoir.
ndubien

signaler à un administrateur
Commentaire de BruNews le 11/04/2007 19:19:14 administrateur CS

ndubien > la console ne sert plus que de support à la démonstration d'un algo, absolument rien de plus. Inutile de perdre du temps à faire de la déco ici, les fioritures sont faites pour le mode GUI.

signaler à un administrateur
Commentaire de pasquet78 le 14/04/2007 03:57:43

Serais-tu anglais ?
Mis à part l’erreur de la 3ème ligne où il y a 1732 à la place de 1752, je vois que tu passes du calendrier julien au grégorien du 2 septembre 1752 au 14 septembre 1752. Il y a seulement les protestants anglais qui ont changé de calendrier à cette date. Le pape Grégoire a instauré le calendrier grégorien à partir du 4 octobre 1582 en passant directement au 15 octobre. Une grande partie de la France a attendu le mandement d’Henri III pour changer de calendrier en décembre 1582.
Peut être que ton inspiration vient des sources du système d’exploitation UNIX, mais ses créateurs, eux, étaient d’origine anglaise.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

création de fichier [ par freeze ] Salut à tous,je voudrais créer un fichier qui reprendrai la date du jourPar exemple 0110022.zip pour un fichier zip du 01/10/2002En fait je voudrais é compiler en c++ avec la date [ par Ganaga ] Bonjour, Je cherche un moyen de compiler un programme en c++ qui inclu la date du jour en dur. &#199;a permettrai d'indiquer dans un fichier ex&#233; calendrier [ par chinois57 ] bjr tt le monde mon prof de math ma demander de faire un calendier perpituel en C mais je coince un peu bcp "please help me" ma source est :#include & SQL et date ! [ par Nixeus ] Bonjour à tous !Le programme que je développe doit comptabiliser des passages ( carte magnétiques) chaque jour ( afin d'en faire des statistiques)Voic programmatione en C [ par badramus ] bonjour tout le monde j'aimerais que vous m'aidez pour un projet &#224; rendre le 15 mai&nbsp;le projet present&#233; ci dessous1&nbsp; pour une date donner la date avec le jour et mois et annee [ par abdokayane ] bjr svp je cherche une applaication avec langage c qui permet de donner le date avec le jour le mois et l annee lorsq je veux ajouter des jours par ex aide pour dvpmt C [ par Stuntfire62 ] Bonjour,j' ai un pb pour un code en C, j'ai plusieurs choses a faire.je dois écrire une fonction permettant de comparer deux dates dans un tableau qui Pseudo-code [ par Caine10 ] Coucou, j'ai un petit soucis avec l'éxercice  suivant... j'ai grand besoin d'aide ^_^"L'utilisateur encode en une seule fois une date sous la forme AA probleme de constucteur urgent [debutant] [ par yanne1985 ] salut class date{ int jour,mois,annee; public: date(int jour=0, int mois=0, int annee=0)     {     this-&gt;jour=jour;     this-&gt;mois=mois;     t heritage[debutant] [ par yanne1985 ] salut s'il vous plait j'ai besoin de votre aidej'ai une classeclass date{int jour,mois,annee;void lire()    {    int i,j,k;    cin&gt;&gt;i; cin&gt;&g


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.