begin process at 2012 02 09 08:45:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > CALENDRIER PERPÉTUEL

CALENDRIER PERPÉTUEL


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :calendrier, perpetuel, jour, date, correspond Niveau :Débutant Date de création :29/11/2005 Vu :17 673

Auteur : blassiou083

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

 Description

Donne le jour correspondant à une date, depuis 1583 (première année où le calendrier actuel avait été mis en place).

Source

  • #include <iostream.h>
  • void main (void)
  • {
  • char Tmois[12][10]={"Janvier","fevrier", "mars", "avril","mai","juin","juillet","aout","septembre","octobre","novembre","decembre"};
  • char LibJour[7][9]={"samedi","dimanche","lundi","mardi","mercredi","jeudi","vendredi"};
  • int NbJour[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  • int NumJour;
  • int NumMois;
  • int Annee;
  • int Jref=1;
  • int A=0;
  • int Mref=0;
  • int Aref=1583;
  • cout<<"Entrez le jour\n";
  • cin>>NumJour;
  • NumJour--;
  • cout<<"Entrez le mois\n";
  • cin>>NumMois;
  • NumMois--;
  • cout<<"Entrez l'annee\n";
  • cin>>Annee;
  • while(Annee>Aref)
  • {
  • if(Aref%4==0)
  • {
  • NbJour[1]=29;
  • A++;
  • if(Aref%100==0)
  • {
  • NbJour[1]=28;
  • A--;
  • if(Aref%400==0)
  • {
  • NbJour[1]=29;
  • A++;
  • };
  • };
  • };
  • Aref++;
  • A++;
  • };
  • if (Annee<Aref)
  • {
  • A=A+1;
  • };
  • while(NumMois>Mref)
  • {
  • A=(NbJour[Mref]+A)%7;
  • Mref++;
  • };
  • if (Mref>1)
  • {
  • A=A+6;
  • };
  • A=(NumJour+A)%7;
  • cout<<"C'est un "<<LibJour[A]<<" "<<NumJour+1<<" "<<Tmois[Mref]<<" "<<Aref;
  • cin>>Jref;
  • };
#include <iostream.h>
void main (void)
{
	char Tmois[12][10]={"Janvier","fevrier", "mars", "avril","mai","juin","juillet","aout","septembre","octobre","novembre","decembre"};
	char LibJour[7][9]={"samedi","dimanche","lundi","mardi","mercredi","jeudi","vendredi"};
	int NbJour[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int NumJour;
	int NumMois;
	int Annee;
	int Jref=1;
	int A=0;
	int Mref=0;
	int Aref=1583;
	cout<<"Entrez le jour\n";
	cin>>NumJour;
	NumJour--;
	cout<<"Entrez le mois\n";
	cin>>NumMois;
	NumMois--;
	cout<<"Entrez l'annee\n";
	cin>>Annee;
	while(Annee>Aref)
	{
		if(Aref%4==0)
		{
			NbJour[1]=29;
			A++;
			if(Aref%100==0)
			{
				NbJour[1]=28;
				A--;
				if(Aref%400==0)
				{
					NbJour[1]=29;
					A++;
				};
			};
		};
		Aref++;
		A++;
	};
	if (Annee<Aref)
	{
		A=A+1;
	};
	
	while(NumMois>Mref)
	{
		A=(NbJour[Mref]+A)%7;
		Mref++;
	};
	if (Mref>1)
	{
		A=A+6;
	};

		A=(NumJour+A)%7;
		cout<<"C'est un "<<LibJour[A]<<" "<<NumJour+1<<" "<<Tmois[Mref]<<" "<<Aref;
		cin>>Jref;
};

 Conclusion

Le programme n'étant pas sécurisé, il est fortement déconseillé de rentrer une date qui n'existe pas !!!


 Sources du même auteur

NOMBRES EN LETTRES

 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 JOUR DE NAISSANCE par fredg19
Source avec une capture ALGORITHME DE MAURICE KRAITCHIK (1882&#65533;1957) par thebroyeur
Source avec une capture VACCATION (AVEC FONCTION) CONSOLERIE, REMIX GCC par sebman
JOUR A PARTIR D'UNE DATE MM/JJ/YYYY par elkasimi2007
Source avec Zip Source avec une capture DELAMBRE par ralebole

Commentaires et avis

Commentaire de max12 le 30/11/2005 16:37:37 administrateur CS

Hum ça peut servir :)

Commentaire de le_duche le 30/11/2005 18:00:57

Je vais etre assez critique, mais bon...

1)
Déjà j'aurais mis
string Tmois[12] = {...};
string LigJour[7] = {...};

2)
Puis ton comptage des années bissextiles est un peu pourri. Ceci serait beaucoup mieux:

par du premier janvier 1601 pour compter le nombre de jours.
puis tu as:
NbrBiss = (Annee-1601)/4-(Annee-1601)/100+(Annee-1601)/400/*-(Annee-1601)/3000*/;
ce qui te donne le nombre d'années bissextiles précédant l'année en cours.
et donc le nombre de jours précédant le 1er janvier de l'annee en cours (depuis 1601) est (Annee-1601)*365+NbrBiss
auquel tu ajoute le nombre de jours passés depuis le début de l'année.
Et la dessus (imaginons que la variable soit "Total") tu fais un beau modulo:
Jour = Total%7;

Immagine un peu que tu doives inclure cette fonction à un programme qui doit calculer des jours pour 100000 dates futuriste (autour de l'an 50000)
et bien tu vas passer à peu près 5000000000 fois dans ta boucle, et ca risque de prendre du temps...

3) tu as remarqué que j'ai rajouté un "3000" dans le calcul des bissextiles, c'est pas très important, mais j'ai vu ca au cour d'astro... ca ne fait qu'améliorer la précision...

Commentaire de BruNews le 30/11/2005 18:28:58 administrateur CS

string Tmois[12] = {...};
en quoi c'est mieux ???

Commentaire de le_duche le 01/12/2005 13:16:12

C'est plus lisible, et ca exploite moins de RAM (meme si dans ce cas ci on s'en fout..., autant prendre les bonnes habitudes!)

Commentaire de BruNews le 01/12/2005 13:24:23 administrateur CS

Dans un prog Win par exemple c'est le contraire, rien que le code nécessaire à la gestion de 'string' apporte quasi 8 Ko inutiles.

Commentaire de le_duche le 01/12/2005 13:30:22

C'est quoi un prog Win ? (chuis pas très avancé en prog...)

Commentaire de BruNews le 01/12/2005 13:32:42 administrateur CS

Comme toutes mes sources et tant d'autres, sur win32 et bientot win64.

Commentaire de DormeurDev le 01/12/2005 13:41:32

"C'est plus lisible, et ca exploite moins de RAM"

=> char Tmois[12][10]={"Janvier", "fevrier", "mars", "avril", "mai",
"juin", "juillet", "aout", "septembre", "octobre", "novembre", "decembre"};
=> char LibJour[7][9]={"samedi", "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi"};

Moins que 12*10+7*9 octets ? T'es sur ?

Commentaire de le_duche le 01/12/2005 13:47:09

Ben il me semble que chaque string déclare un char de plus que nécessaire, c'est-à-dire 19 de trop en tout, et ici, on en déclare 66 en trop puisque tous les mots ne font pas 10 lettres et 9 lettres chacun...

Commentaire de DormeurDev le 01/12/2005 17:50:10

Si y'a que ca qui te dérange il n'y a qu'à remplacer son code par

char * Tmois[12];
char * LibJour[7];
Tmois[0] = "janvier";
Tmois[1] = "fevrier";
etc...

Mais il me semble à vu de nez que string doit prendre de la place pour autre chose que la chaîne de caractère.

Commentaire de Cyberboy2054 le 01/12/2005 18:49:54

Ne serait ce que pour stocker la taille de la chaine dans la classe, ca fait 4 octets de plus.
Mais bon, on chippote, les ordis d'aujourd'hui sont largement capables de s'occuper de quelques malheureux octets dans ce cas particulier.
Il ne faut par contre pas confondre 'mieux' et 'plus simple'.
la class std::string permet de gérer des chaines de caracteres facilement, encore faut il avoir besoin de les traiter. Ici on a juste besoin de stocker leur contenu, donc pas besoin de passer par elles, autant passer par le type presque de base qu'est la chaine de caracteres, même si elle est terminée par un caractère nul en plus ...

Commentaire de BruNews le 01/12/2005 20:22:11 administrateur CS

string n'a pas que la longueur, ces 4 octets ne sont rien en rapport de l'alloc mémoire nécessaire, ça oui que ça amuse bien le processeur. On ajoutera donc donc le pointeur ET une fragmentation de l'espace mémoire du processus, même si ici est faible. Le tableau de char ne nécessite par contre rien du tout, quelques octets dans registre data et adresse est connue à la compilation.

Commentaire de le_duche le 02/12/2005 11:03:29

C'est vrai que c'est du chipotage... mais bon... je suis un mathématicien moi, il faut m'excuser ! :p

Commentaire de vecchio56 le 02/12/2005 14:40:04 administrateur CS

J'ai entré une date qui n'existait pas et mon aoridnateur a explosé, mais bon tu nous avait prévenu que ton prog n'était pas sécurisé.
Pour les string c'est bien sur plus mauvais (allocation des chaines dans le tas, plus d'autre champs comme size qui ne serviront jamais)

Commentaire de blassiou083 le 02/12/2005 17:02:53

Je tiens aussi à préciser que je me suis mis au c++ qu'en septembre où je suis entré en BTS info (donc je ne connais pas tout, pour ne pas dire rien pour le moment) et qu'avant, le seul langage que j'avais pratiqué était le TI basic(donc rien à voir, ou presque). Je suis donc pour qu'on critique, me dise ce qui serait mieux, etc.

 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 é 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 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 & 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 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 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 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 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 DATETIMEPICKER [ par cartes1 ] BonjourJe voudrais synchroniser deux contrôles calendrier (DATETIMEPICKER1 et DATETIMEPICKER2)pour une comptabilité en C++ avec VC6 afin que lorsque l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 0,952 sec (4)

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