begin process at 2012 05 27 14:10:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > CALENDRIER PERPÉTUEL DE L'AN 0 À L'AN 2499

CALENDRIER PERPÉTUEL DE L'AN 0 À L'AN 2499


 Information sur la source

Note :
Aucune note
Catégorie :Date / Heure Classé sous :calendrier, perpétuel Niveau :Débutant Date de création :16/02/2005 Date de mise à jour :13/12/2005 11:17:40 Vu / téléchargé :20 375 / 382

Auteur : CoolMouse

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Ce programme utilise un algorithme permettant de définir le jour d'une date précise.
Le mode de fonctionnement de l'algorithme utilisé permet de ne pas dépendre de la date entrée par l'utilisateur.
En effet le programme mettra le même temps à résoudre la date que celle-ci soit proche de l'année 0 ou proche de 2499, et même si elle était noyée entre ces deux limites.

J'ai programmé sous Borland C++ 5, mais il ne devrait pas y avoir de pb d'utilisation même sur les autres compilateurs, je m'en suis tenu au Turbo C, pour le langage.

Source

  • /*
  • Cool Mouse, le 13.12.2005
  • CALENDRIER PERPETUEL
  • DE L'AN 0 A L'AN 2499
  • Version 1.2
  • */
  • #include <stdio.h>
  • #include <conio.h>
  • void erreurs (void);
  • int cherche_jour (int jour, int _code_mois);
  • int cherche_mois (int mois_n, int bisextile, int _code_annee);
  • int cherche_annee (int annee, int avant);
  • void erreurs ()
  • {
  • puts ("<<< DATE NON VALIDE >>>");
  • }
  • int cherche_jour (int jour, int _code_mois)
  • {
  • int tab_jour[5][7] = {{1,2,3,4,5,6,7},{8,9,10,11,12,13,14},{15,16,17,18,19,20,21},
  • {22,23,24,25,26,27,28},{29,30,31,0,0,0,0}},
  • tab_code_jour[7][7] = {{5,6,0,1,2,3,4},{6,0,1,2,3,4,5},{0,1,2,3,4,5,6},
  • {1,2,3,4,5,6,0},{2,3,4,5,6,0,1},{3,4,5,6,0,1,2},{4,5,6,0,1,2,3}},
  • ligne, colonne;
  • ligne = colonne = 0;
  • while (tab_jour[ligne][colonne] != jour)
  • {
  • if (colonne == 6) { colonne = 0; ligne ++; }
  • else colonne ++;
  • }
  • ligne = _code_mois;
  • return (tab_code_jour[ligne][colonne]);
  • }
  • int cherche_mois (int mois_n, int bisextile, int _code_annee)
  • {
  • int //tab_mois1[3][7] = {{5,7,3,6,9,4,10},{0,2,11,0,12,7,0},{0,0,0,0,0,1,0}},
  • tab_mois1[3][7] = {{5,2,3,6,9,1,10},{0,8,11,0,12,7,0},{0,0,0,0,0,4,0}},
  • //tab_mois0[3][7] = {{5,7,2,6,9,4,1},{0,0,3,0,12,7,10},{0,0,0,11,0,0,0}},
  • tab_mois0[3][7] = {{5,8,2,6,9,4,1},{0,0,3,0,12,7,10},{0,0,11,0,0,0,0}},
  • tab_code_mois[7][7] = {{1,2,3,4,5,6,0},{2,3,4,5,6,0,1},{3,4,5,6,0,1,2},
  • {4,5,6,0,1,2,3},{5,6,0,1,2,3,4},{6,0,1,2,3,4,5},{0,1,2,3,4,5,6}},
  • ligne, colonne;
  • ligne = colonne = 0;
  • if (bisextile == 1)
  • while (tab_mois1[ligne][colonne] != mois_n)
  • {
  • if (colonne == 6) { colonne = 0; ligne ++; }
  • else colonne ++;
  • }
  • else
  • while (tab_mois0[ligne][colonne] != mois_n)
  • {
  • if (colonne == 6) { colonne = 0; ligne ++; }
  • else colonne ++;
  • }
  • ligne = _code_annee;
  • return (tab_code_mois[ligne][colonne]);
  • }
  • int cherche_annee (int annee, int avant)
  • {
  • int tab_centaines[7][5] = { {0,7,14,17,21},{1,8,-1,-1,-1},{2,9,-1,18,22},
  • {3,10,-1,-1,-1},{4,11,-1,19,23},{5,12,16,20,24},{26,13,-1,-1,-1}},
  • tab_dizaines[18][7] = {{0,1,2,3,-1,4,5},{6,7,-1,8,9,10,11},
  • {-1,12,13,14,15,-1,16},{17,18,19,-1,20,21,22},
  • {23,-1,24,25,26,27,-1},{28,29,30,31,-1,32,33},
  • {34,35,-1,36,37,38,39},{-1,40,41,42,43,-1,44},
  • {45,46,47,-1,48,49,50},{51,-1,52,53,54,55,-1},
  • {56,57,58,59,-1,60,61},{62,63,-1,64,65,66,67},
  • {-1,68,69,70,71,-1,72},{73,74,75,-1,76,77,78},
  • {79,-1,80,81,82,83,-1},{84,85,86,87,-1,88,89},
  • {90,91,-1,92,93,94,95},{-1,96,97,98,99,-1,-1}},
  • tab_code_annee[7][7] = {{6,0,1,2,3,4,5},{5,6,0,1,2,3,4},{4,5,6,0,1,2,3},{3,4,5,6,0,1,2},
  • {2,3,4,5,6,0,1},{1,2,3,4,5,6,0},{0,1,2,3,4,5,6}},
  • ligne, colonne, centdiz;
  • ligne = colonne = 0;
  • centdiz = 0; // variable travaillant avec les tableaux des centaines et
  • // des dizaines. Variable prenant en 1er les 2 chiffres des
  • // centaines puis en 2nd les dizaines de l'annee recherchee
  • if (avant == 1) tab_centaines[1][2] = 15;
  • else tab_centaines[4][2] = 15;
  • centdiz = annee / 100;
  • while (tab_centaines[ligne][colonne] != centdiz)
  • {
  • if (colonne == 4) { colonne = 0; ligne ++; }
  • else colonne ++;
  • }
  • avant = ligne;
  • ligne = colonne = 0;
  • centdiz = annee % 100;
  • while (tab_dizaines[ligne][colonne] != centdiz)
  • {
  • if (colonne == 6) { colonne = 0; ligne ++; }
  • else colonne ++;
  • }
  • ligne = avant;
  • return (tab_code_annee[ligne][colonne]);
  • }
  • void affiche_resultat (int code_jour, int jour_n, int mois_n, int annee)
  • {
  • // initialise les tableaux de mois et de jours
  • char *mois[12] = {"janvier","fevrier","mars","avril","mai","juin","juillet",
  • "aout","septembre","octobre","novembre","decembre"},
  • *jour[7] = {"lundi","mardi","mercredi","jeudi","vendredi","samedi",
  • "dimanche"};
  • printf ("%s %d %s %d", jour[code_jour], jour_n, mois[mois_n -1], annee);
  • }
  • void main ()
  • {
  • char choix = ' ';
  • int jour_n, mois_n, annee, bisextile, avant, validite, code_jour,
  • code_mois, code_annee;
  • long controle;
  • jour_n = mois_n = annee = 0; // initialise les variables de date a 0
  • controle = avant = -1 ; // Test la date pour savoir si elle est avant
  • // le 4.10.1582 ou apres le 15.10.1582
  • bisextile = 0; // Test l'annee, pour savoir si elle est bisextile ou non
  • validite = 0; // Test la validité de la date saisie par l'utilisateur
  • code_jour = code_mois = code_annee = 0; // Initialise les variables
  • // permettant de definir le jour precis d'une date
  • clrscr ();
  • puts ("\n\t\t\tBienvenue sur le calendrier perpetuel.\n\n Vous allez "
  • "enfin connaitre le jour correspondant a la date que vous saisirez."
  • "\n\n\n\tAttention a l'annee que vous entrerez, ce calendrier perpetuel\n"
  • "\t prend en compte une echelle allant de l'an 0 a l'an 2499\n\n\n\n");
  • while (1)
  • {
  • do
  • {
  • printf ("\nEntrez la date (jj/mm/aaaa): ");
  • scanf ("%d/%d/%d",&jour_n, &mois_n, &annee);
  • // Test de la bisextilité de l'année
  • if ( (annee % 100 == 0 && annee % 400 == 0) || (annee % 100 != 0 && annee % 4 == 0) )
  • bisextile = 1 ;
  • else
  • bisextile = 0 ;
  • // Test de la validité de la date entrée par l'utilisateur
  • if ( (jour_n < 1 || jour_n > 31) || (mois_n < 1 || mois_n > 12) ||
  • (annee < 0 || annee >= 2500) ||
  • (jour_n > 30 && (mois_n == 4 || mois_n == 6 ||
  • mois_n == 9 || mois_n == 11)) ||
  • (mois_n == 2 && (jour_n > 29 || (bisextile == 0 && jour_n > 28))) )
  • {
  • validite = 1; // DATE NON VALIDE
  • erreurs ();
  • }
  • else validite = 0; // Date Valide
  • } while (validite);
  • controle = (annee * 10000) + (mois_n * 100) + jour_n ; // sonde de contrôle
  • printf ("controle = %u\n", controle);
  • // contrôle de changement de calendrier
  • if (controle <= 15821004) avant = 1;
  • if (controle > 15821015) avant = 0;
  • if (controle > 15821004 && controle <= 15821015)
  • puts ("Desole! Le jour est impossible a determiner pour cette date.");
  • else
  • {
  • code_annee = cherche_annee (annee, avant);
  • code_mois = cherche_mois (mois_n, bisextile, code_annee);
  • code_jour = cherche_jour (jour_n, code_mois);
  • affiche_resultat (code_jour, jour_n, mois_n, annee);
  • }
  • puts ("\n\n\t\tS: Saisir une nouvelle date\n\t\tQ: Quitter l'application");
  • printf ("\n\t\t\tVotre Choix........: ");
  • choix = getche ();
  • if (choix == 'S' || choix == 's') puts (" "); // printf ("\nla touche tapee est S ou s, normalement: %c\n", choix);
  • else break; // { printf ("\nla touche tapee est: %c\n", choix); break; }
  • }
  • printf ("\n\n\tAppuyer sur une touche pour quitter........");
  • getch ();
  • }
/*
	Cool Mouse, le 13.12.2005
		CALENDRIER PERPETUEL
	  DE L'AN  0 A L'AN 2499

				Version 1.2
*/


#include <stdio.h>
#include <conio.h>

void erreurs (void);
int cherche_jour (int jour, int _code_mois);
int cherche_mois (int mois_n, int bisextile, int _code_annee);
int cherche_annee (int annee, int avant);

void erreurs ()
{
	puts ("<<< DATE NON VALIDE >>>");
}

int cherche_jour (int jour, int _code_mois)
{
	int tab_jour[5][7] = {{1,2,3,4,5,6,7},{8,9,10,11,12,13,14},{15,16,17,18,19,20,21},
							{22,23,24,25,26,27,28},{29,30,31,0,0,0,0}},
		 tab_code_jour[7][7] = {{5,6,0,1,2,3,4},{6,0,1,2,3,4,5},{0,1,2,3,4,5,6},
								{1,2,3,4,5,6,0},{2,3,4,5,6,0,1},{3,4,5,6,0,1,2},{4,5,6,0,1,2,3}},
		 ligne, colonne;

	ligne = colonne = 0;

	while (tab_jour[ligne][colonne] != jour)
	{
		if (colonne == 6)		{	colonne = 0;	ligne ++;	}
		else		colonne ++;
	}
	ligne = _code_mois;
	return (tab_code_jour[ligne][colonne]);
}

int cherche_mois (int mois_n, int bisextile, int _code_annee)
{
	int //tab_mois1[3][7] = {{5,7,3,6,9,4,10},{0,2,11,0,12,7,0},{0,0,0,0,0,1,0}},
		tab_mois1[3][7] = {{5,2,3,6,9,1,10},{0,8,11,0,12,7,0},{0,0,0,0,0,4,0}},
		//tab_mois0[3][7] = {{5,7,2,6,9,4,1},{0,0,3,0,12,7,10},{0,0,0,11,0,0,0}},
		tab_mois0[3][7] = {{5,8,2,6,9,4,1},{0,0,3,0,12,7,10},{0,0,11,0,0,0,0}},
		 tab_code_mois[7][7] = {{1,2,3,4,5,6,0},{2,3,4,5,6,0,1},{3,4,5,6,0,1,2},
								{4,5,6,0,1,2,3},{5,6,0,1,2,3,4},{6,0,1,2,3,4,5},{0,1,2,3,4,5,6}},
		 ligne, colonne;

	ligne = colonne = 0;


	if (bisextile == 1)
		while (tab_mois1[ligne][colonne] != mois_n)
		{
			if (colonne == 6)		{	colonne = 0;	ligne ++;	}
			else		colonne ++;
		}
	else
		while (tab_mois0[ligne][colonne] != mois_n)
		{
			if (colonne == 6)		{	colonne = 0;	ligne ++;	}
			else		colonne ++;
		}
	ligne = _code_annee;
	return (tab_code_mois[ligne][colonne]);
}

int cherche_annee (int annee, int avant)
{
	int tab_centaines[7][5] = { {0,7,14,17,21},{1,8,-1,-1,-1},{2,9,-1,18,22},
								{3,10,-1,-1,-1},{4,11,-1,19,23},{5,12,16,20,24},{26,13,-1,-1,-1}},
		 tab_dizaines[18][7] = {{0,1,2,3,-1,4,5},{6,7,-1,8,9,10,11},
								{-1,12,13,14,15,-1,16},{17,18,19,-1,20,21,22},
								{23,-1,24,25,26,27,-1},{28,29,30,31,-1,32,33},
								{34,35,-1,36,37,38,39},{-1,40,41,42,43,-1,44},
								{45,46,47,-1,48,49,50},{51,-1,52,53,54,55,-1},
								{56,57,58,59,-1,60,61},{62,63,-1,64,65,66,67},
								{-1,68,69,70,71,-1,72},{73,74,75,-1,76,77,78},
								{79,-1,80,81,82,83,-1},{84,85,86,87,-1,88,89},
								{90,91,-1,92,93,94,95},{-1,96,97,98,99,-1,-1}},
		 tab_code_annee[7][7] = {{6,0,1,2,3,4,5},{5,6,0,1,2,3,4},{4,5,6,0,1,2,3},{3,4,5,6,0,1,2},
								{2,3,4,5,6,0,1},{1,2,3,4,5,6,0},{0,1,2,3,4,5,6}},
		 ligne, colonne, centdiz;

	ligne = colonne = 0;
	centdiz = 0;    // variable travaillant avec les tableaux des centaines et
						// des dizaines. Variable prenant en 1er les 2 chiffres des
						// centaines puis en 2nd les dizaines de l'annee recherchee

	if (avant == 1)	tab_centaines[1][2] = 15;
	else              tab_centaines[4][2] = 15;

	centdiz = annee / 100;
	while (tab_centaines[ligne][colonne] != centdiz)
	{
		if (colonne == 4)		{	colonne = 0;	ligne ++;	}
		else						colonne ++;
	}
	avant = ligne;
	ligne = colonne = 0;
	centdiz = annee % 100;
	while (tab_dizaines[ligne][colonne] != centdiz)
	{
		if (colonne == 6)		{	colonne = 0;	ligne ++;	}
		else						colonne ++;
	}
	ligne = avant;
	return (tab_code_annee[ligne][colonne]);
}

void affiche_resultat (int code_jour, int jour_n, int mois_n, int annee)
{
	// initialise les tableaux de mois et de jours
	char *mois[12] = {"janvier","fevrier","mars","avril","mai","juin","juillet",
							"aout","septembre","octobre","novembre","decembre"},
		  *jour[7] = {"lundi","mardi","mercredi","jeudi","vendredi","samedi",
							"dimanche"};

		printf ("%s %d %s %d", jour[code_jour], jour_n, mois[mois_n -1], annee);
}

void main ()
{
	char choix = ' ';
	int jour_n, mois_n, annee, bisextile, avant, validite, code_jour,
		 code_mois, code_annee;
	long controle;

	jour_n = mois_n = annee = 0;	// initialise les variables de date a 0
	controle = avant = -1 ;		// Test la date pour savoir si elle est avant
										// le 4.10.1582 ou apres le 15.10.1582
	bisextile = 0;		// Test l'annee, pour savoir si elle est bisextile ou non
	validite = 0;		// Test la validité de la date saisie par l'utilisateur
	code_jour = code_mois = code_annee = 0;	// Initialise les variables
									// permettant de definir le jour precis d'une date

	clrscr ();
	puts ("\n\t\t\tBienvenue sur le calendrier perpetuel.\n\n Vous allez "
			"enfin connaitre le jour correspondant a la date que vous saisirez."
			"\n\n\n\tAttention a l'annee que vous entrerez, ce calendrier perpetuel\n"
			"\t   prend en compte une echelle allant de l'an 0 a l'an 2499\n\n\n\n");

  while (1)
  {
	do
	{
		printf ("\nEntrez la date (jj/mm/aaaa): ");
		scanf ("%d/%d/%d",&jour_n, &mois_n, &annee);
// Test de la bisextilité de l'année
		if ( (annee % 100 == 0 && annee % 400 == 0) || (annee % 100 != 0 && annee % 4 == 0) )
			bisextile = 1 ;
		else
			bisextile = 0 ;
// Test de la validité de la date entrée par l'utilisateur
		if ( (jour_n < 1 || jour_n > 31) || (mois_n < 1 || mois_n > 12) ||
			  (annee < 0 || annee >= 2500) ||
			  (jour_n > 30 && (mois_n == 4 || mois_n == 6 ||
			  						 mois_n == 9 || mois_n == 11)) ||
			  (mois_n == 2 && (jour_n > 29 || (bisextile == 0 && jour_n > 28))) )
		{
			validite = 1;			// DATE NON VALIDE
			erreurs ();
		}
		else	validite = 0;		// Date Valide
	} while (validite);

	controle = (annee * 10000) + (mois_n * 100) + jour_n ;		// sonde de contrôle
	printf ("controle = %u\n", controle);
														// contrôle de changement de calendrier
	if (controle <= 15821004)	avant = 1;
	if (controle >  15821015)	avant = 0;
	if (controle >  15821004 && controle <= 15821015)
		puts ("Desole! Le jour est impossible a determiner pour cette date.");
	else
	{
		code_annee = cherche_annee (annee, avant);
		code_mois  = cherche_mois  (mois_n, bisextile, code_annee);
		code_jour  = cherche_jour  (jour_n, code_mois);
		affiche_resultat (code_jour, jour_n, mois_n, annee);
	}
	puts ("\n\n\t\tS: Saisir une nouvelle date\n\t\tQ: Quitter l'application");
	printf ("\n\t\t\tVotre Choix........: ");
	choix = getche ();
	if (choix == 'S' || choix == 's')	  puts (" "); // printf ("\nla touche tapee est S ou s, normalement: %c\n", choix);
	else break; // { printf ("\nla touche tapee est: %c\n", choix); break; }
  }
	printf ("\n\n\tAppuyer sur une touche pour quitter........");
	getch ();
}

 Conclusion

Actuellement le code est écrit pour DOS, mais je compte le mettre sous format graphique (j'ai la flemme pour l'instant) et le porter sur d'autres langues que le français. De même, il n'est pas très commenté pour le moment, mais dans une mise à jour prochaine, vous aurez tous les détails eur l'algorithme utilisé.

Un petit bémol, vous vous en apercevrez en regardant le code, et si vous taper une certaine date... En l'an 1582, le programme ne peut définir le jour entre le 5/10/1582 et le 15/10/1582... pour cause de changement de calendrier.

A part cela, le programme convertit automatiquement les semaines de l'antiquité ou d'autres périodes, en semaines de 7 jours (d'aujourd'hui).

Si vous avez des remarques, ou des suggestions elle sont les bienvenues.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 mai 2005 01:06:24 :
ajout du code source en clair sur la page, et ajout d'annotations
07 décembre 2005 10:42:49 :
Correction de bug: Comme SOFIANE1234 me le faisait aimablement remarquer, le programme produisait une erreur de décalage d'un jour à compter du 1/11/2005. L'erreur venait en fait des tableaux des mois (il manquait le mois d'août). Erreur corrigée maintenant. Modification du code: De même, j'ai simplfié le test de la bisextilité de l'année, en reprenant l'idée de BruNews. Merci à lui.
13 décembre 2005 11:17:40 :
Ajout du fichier ZIP, modif de la source avec vue sur les champs modifiés

 Sources du même auteur

DÉFINIR LES N PREMIERS NOMBRES 'PREMIER'

 Sources de la même categorie

DATETIMECONVERTER par guill76
Source avec Zip CLASSE DE DATE LOCALISÉE (20 LANGUES) par exar
Source avec Zip CLASSE MOMENT V2.0 par le_duche
CALCUL DATE DE PAQUES (DATE MOBILE) par steph12358
Source avec une capture VACCATION (AVEC FONCTION) CONSOLERIE, REMIX GCC par sebman

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [WIN32] AGENDA / ORGANISEUR (GESTION DU CONTRÔLE "CALENDRIER... par uaip
Source avec une capture VACCATION (AVEC FONCTION) CONSOLERIE, REMIX GCC par sebman
CALENDRIER PERPÉTUEL par blassiou083

Commentaires et avis

Commentaire de sofiane1234 le 23/10/2005 13:11:34

Salut l'ami,

Ton prog est pas mal mais malheureusement il y a un probleme

sur le test suivant : 01/11/2005

ton prog renvoie un mercredi alors qu'on est réellement

MARDI.

Mise à jour attendu...pour que tout le monde puisse profité de ta source

@+

Commentaire de CoolMouse le 10/11/2005 02:09:59

Ah oui, en effet, ce bug m'avait échappé.

Je mets la mise à jour, sous peu. Merci de ta remarque.


@+

Commentaire de blassiou083 le 17/11/2005 23:51:12

Règle des Années bissextiles : Toutes les Années multiples de 4 sont bissextiles
Exception : Les Années multiples de 100 NE sont PAS bissextiles
Exception de l'exception : Les années multiples de 400 SONT bissextiles !!!
Donc 1700, 1800, 1900 n'étaient PAS bissextile, tandis que 2000 était bissextile.
Je ne pense pas que qu'en a tenu compte, d'après ta source.
Je travaille actuellement là-dessus et j'ai un prog qui ressemble à ça pour savoir si l'année est bissextile ou non

if(Annee%4==0)
{
NbJour[1]=29;
if(Annee%100==0)
{
NbJour[1]=28;
if(Annee%400==0)
{
NbJour[1]=29;
};
};
};

Commentaire de BruNews le 18/11/2005 00:40:39 administrateur CS

bissext = ((iYear & 3) == 0 && ((iYear % 100) != 0 || (iYear % 400) == 0));

Commentaire de pipozor le 09/12/2005 12:23:56

Salut,
Merci pour les corrections mais sauf si j'ai loupé qqch le code de la page et le zip ne sont pas mis à jour avec les corrections? J'ai toujours les memes erreurs.

Merci de ton aide.

Commentaire de le_duche le 13/12/2005 15:50:15

petit indice supp puisque tu étend à des grandes dates:

il se trouve comme on l'a déja dit, que
les année div par 4 sont biss.
exception: les années div par 100 ne le sont pas
exception: les années div par 400 le sont
exception: les années div par 3000 ne le sont pas

note: j'ai eu la flemme de lire ton code, mais as tu pris en compte le changement de calendrier au 16è siècle, et donc le changement d'algo du calendrier julien au grégorien (ou l'invers je sais plus ^^)

Commentaire de CoolMouse le 18/12/2005 11:08:43

J'ai bien pris en compte les années bissextile de type / par 4 et celles où il faut / par 400. Pour la / par 4000, je n'en ai pas besoin puisque je ne vais pas aussi loin.

// Test de la bisextilité de l'année
        if ( (annee % 100 == 0 && annee % 400 == 0) || (annee % 100 != 0 && annee % 4 == 0) )
            bisextile = 1 ;
        else
            bisextile = 0 ;
Le but de la division est juste de vérifier s'il y a un reste ou pas. S'il y en a un, l'année n'est pas bissextile, dans le cas contraire, elle l'est.

Et pour le changement de calendrier, nous sommes passé du calendrier Julien au calendrier Grégorien.

Commentaire de Angelus4 le 20/10/2006 15:44:44

Bonjour,

Je passe par hasard car je cherche ce genre d'algorithme pour développer un calendrier perpetuel qui calculerait le jour d'une date en un temps de calcul constant quelque soit cette date.

La discussion/le projet date un peu mais tanpis...
J'ai regardé le code pour en savoir un peu plus mais il m'a fait un peu mal aux yeux, dommage qu'il n'ait pas été plus propre - avec plus de commentaires comme c'était annoncé dans l'explication finale.

Des choses inutiles s'y sont glissées qui n'aident pas à la lisibilité comme :
if (annee % 100 == 0 && annee % 400 == 0)
Si annee % 400 == 0 alors forcement annee % 100 vaudra 0 aussi.

Voilà je repasserais au cas où mon message aura été pris en considération.

Bye,

Commentaire de le_duche le 21/10/2006 21:02:49

renseigne toi sur les objets ftime si je me souviens bien !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Recherche un calendrier Grégorien [ par Okin78 ] Bonjour à tous, voila cé bien sympathique ici ;o) !!je me demande ou puis je trouver avec source un calendrier Grégorien en C/C++ ?Merci ;o) Recherche objet calendrier hebdomadaire [ par laglisse ] Je recherche un objet graphique pour VCplusplus assimilable a une grille regroupant toutes les heures de la semaine et permettant d'un simple glisseme MFC calendrier [ par james ] Je voudrai faire un calendrier mais le pb est que les classes qui existent CMonthCalCtrl et CDateTimeCtrl ne me permettent que de sélectionner plusieu Calendrier C++ .NET [ par tarzent ] Salut!Je voudrais récupérer la date sélectionnée dans un controle "IDC_MONTHCALENDAR"... J'y arrive dans une Form, il suffit de faire appel à la fonct VC++6 && calendrier [ par safira ] safiraSalut!Quelqu'un pourrait m'aider?Je dois introduire un calendrier dans un dialog et doit sélectionner la date. Comment dois-je faire?Merci<br Calendrier [ par gus2647 ] Bonjour,Je viens de creer un calendrier avec la classe CMonthCalCtrl et je n arrive pas a recuperer la date que je selection et a refermer juste apres urgent svp !!! : objet calendrier [ par nicosdieu ] bonjour,j'ai deux forumlaires A et Bdans B, j'ai un objet de type calendrier.Lorsque j'essaye d'ouvrir B depuis A, rien ne s'ouvreSi j'enleve l'objet Cherche interface identique au calendrier de Outlook en C# pour une interface SCHEDULER [ par yfbf ] Bonjour à tous,Je suis actuellement occupé de développer un SCHEDULER.Ce scheduler a pour l'instant comme interface un TreeView comprenant les jours d Calendrier irréel [ par Frenabis ] Voil&#224; mon probl&#232;me : je voudrai cr&#233;er un calendrier. Mais pas un calendrier normal, il faudrait qu'il soit imaginaire. Le probl&#232;me Comment récupérer la valeur choisie dans un calendrier en mode graphique et la mettre ensuite dans une String ? [ par michelcreve ] in first, Bonjour à tous Voila, j'essaie de faire une appli pour demander de saisir une date dans un champ avec la possibilité de cliquer sur un bout


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,232 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales