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 !

AFFICHE DU JOUR PAR RAPPORT À UNE DATE


Information sur la source

Catégorie :Date / Heure Classé sous : semaine, jour, date Niveau : Débutant Date de création : 21/02/2006 Vu : 8 771

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Je devait faire un programme en JAVA qui donne le jour de la semaine par rapport à une date, mais j'ai préférée le faire en C.
C'est tout....!
 

Source

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

}

Commentaires et avis

signaler à un administrateur
Commentaire de Joky le 23/02/2006 01:26:13

switch(mois)
{
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:
     nb_Jour = 31;
   break;

//etc...
}
c'est mieux j'trouve

signaler à un administrateur
Commentaire de Pacifica le 23/02/2006 22:03:36

Tu testerai où le mois de février, et les mois de 30 jours ? Après le mois de 31 jours ?
Normalement du faites que j'initialise à 31 avant le switch(mois)
, je ne teste que les cas où j'ai pas 31 jours, et de plus je le remets dans le défaut du switch(mois) ???
Pour ma part, normal c'est mon code, lol, je préfére ma méthode...mais bon !

signaler à un administrateur
Commentaire de Joky le 23/02/2006 22:10:56

Ah nan mais c'est parce que t'as pas compris le
//etc...
ça veut dire qu'après tu as juste à continuer pour les mois de 30 jours et de 28/29 jours
fin bref c'est ta source c'est vrai, c'est juste des lignes superflues que t'as écrit

signaler à un administrateur
Commentaire de tekila_bandita le 24/02/2006 13:14:01

Cette source remplit parfaitement son objectif, ce qui fait déja donc pour le moment une note de 5/5, en revanche pour la clarté du code et la maintenance, elle mérite à peu près 0/1, ce qui fait donc une note totale de 5/6...
En revanche, pour ce qui est de ton algorithme, je pense que tu t'es bien cassé la tête pour un rien, ton code est gros pour peu de choses, et il est donc plus lent ! Je metrais donc un 2/4 pour l'algorithme juste parce que tu as vraiment du te cassé les "bonbons" pour l'ecrire...
Si tu veux, moi j'ai fait une source ayant exactement le meme but, en C aussi, mais avec une methode de calcul beaucoup plus courte, beaucoup plus efficace, et pouvant etre réutilisée dans d'autres calculs...
Va voir ma source, elle est dans la meme categorie que la tienne (Date/heure), et est juste en dessous de la tienne...
Voila, j'ai tout dis !
bonne continuation, et à l'avenir tache d'utiliser les formules que de gentils mathematiciens se sont encore plus compliqué la vie a trouver, afin de simplifier la notre...

signaler à un administrateur
Commentaire de Pacifica le 24/02/2006 20:19:34

merci pour l'info. J'effectuerai plus de recherche la prochaine fois que je ferai du code.

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 é Connaitre le numéro de semaine pour une date donnée [ par diouck ] SalutJe sais qu'en VB il est possible de connaitre le numéro de semaine d'une date donnée avec la fonction suivante :"NumWeek.Text = DatePart("ww", Da 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; Retrouver le numero de semaine à partir d'une date [ par sebclick ] Bonjour,Je recherche une fonction qui permet de retrouver le num&#233;ro de semaine &#224; partir d'une date.Je passe en param&#232;tre 08 12 2005 et 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 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 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


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


LG KP501

Entre 9€ et 159€


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,172 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é.