Affichage d'un calendrier en langage c
Fermé
kheweul86
Messages postés
1
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
25 mai 2008
-
25 mai 2008 à 14:05
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 oct. 2012 à 23:15
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 oct. 2012 à 23:15
A voir également:
- Affichage d'un calendrier en langage c
- Langage ascii - Guide
- Calendrier partagé google - Guide
- Langage binaire - Guide
- Affichage double ecran - Guide
- Synchroniser calendrier outlook et gmail - Guide
2 réponses
cela t'affiche le calendrier de n'importe qu'elle année
//directive include des fichiers "stdio.h", "time.h", "math.h"
#include <stdio.h>
#include <math.h>
#include <time.h>
//mise en place du type "structure" de la DATE
typedef struct{ int jour, mois, annee; } DATE;
//forme classique vers forme astronomique
long datetoastro (DATE d)
{
//declarations des variables
int a,m,jourastro;
if (d.mois>2)
{a=d.annee; m=d.mois-3;}
else
{a=d.annee-1; m=d.mois+9;}
jourastro=((146097*(a/100))/4)+((1461*(a%100))/4)+(((153*m)+2)/5)+d.jour+1721119;
return jourastro;
}
//forme astronomique vers forme classique
DATE astrotodate (long jourastro)
{
//declarations des variables
int a,m,j,annee,mois,jour,q1,q2,q3;
q1=4*(jourastro-1721119)-1;
a=q1/146097;
q2=4*((q1%146097)/4)+3;
j=q2/1461;
q3=5*(((q2%1461)/4)+1)-3;
m=q3/153;
DATE d;
d.jour=(((q3%153)/5)+1);
if (m<10)
{ d.annee=100*a+j; d.mois=m+3;}
else
{d.annee=100*a+j+1;d.mois=m-9;}
return d;
}
//nb de jours dans un mois
int nbjours_mois(DATE x)
{
//convertion en astro du 1er du mois
long x_astro;
x_astro = datetoastro(x);
//convertion en astro du 1er du mois suivant
DATE y = {1, x.mois+1, x.annee};
long y_astro;
y_astro = datetoastro(y);
//calcul nb jour du mois
int nbjours_m;
nbjours_m = (y_astro - x_astro);
return nbjours_m;
}
//nb de jours dans une annee
int nbjours_annee(DATE x)
{
//convertion en astro du 1er de l'annee
long x_astro;
x_astro = datetoastro(x);
//convertion en astro du 1er de l'annee suivante
DATE y = {1, 1, x.annee+1};
long y_astro;
y_astro = datetoastro(y);
//calcul nb jour de l'annee
int nbjours_a;
nbjours_a = (y_astro - x_astro);
return nbjours_a;
}
//jour de la semaine
char jour_de_semaine(DATE x)
{
//convertion en astro de la date
long x_astro;
x_astro = datetoastro(x);
//calcul du jour de la semaine
int jour_de_s;
jour_de_s = (x_astro%7);
//conversion de l'entier en lettre du jour de la semaine (possible de le realiser en if ou switch)
//char s[]={'L','M','M','J','V','S','D'};
return jour_de_s;
}
//jour du 1er de l'annee
int prem_de_annee(DATE x)
{
DATE y = {1, 1, x.annee};
char prem_de_a;
prem_de_a=jour_de_semaine(y);
return prem_de_a;
}
//recherche du numero de semaine
int semaine(DATE x)
{
DATE y = {1, 1, x.annee};
int prem_sem;
int num_sem;
prem_sem=prem_de_annee(y);
if (prem_sem<=3) num_sem=1;
else num_sem=54;
return num_sem;
}
int main ()
{
DATE x ;
// demande du jour
/* printf (" Quelle jour? ");
scanf("%d", &x.jour);
if (x.jour>31)
{printf ("!!! Gros debile, un mois ne peux pas contenir plus de 31j !!!");
return 0;}
*/
x.jour = 1;
//demande du mois
/* printf ("\n Quel mois? ");
scanf("%d", &x.mois);
if (x.mois>12)
{printf ("!!! Mais tu es vraiment idiot, une annee comporte 12 mois !!!");
return 0;}
*/
x.mois = 1;
// demande de l'année
printf (" Quelle annee? ");
scanf("%d", &x.annee);
//afichage du numero de la premiere semaine
printf ("%d\n",semaine(x));
//boucle pour créer un calendrier graphique annuel
for (x.mois=1;x.mois<=12;x.mois++)
{
//VERSION GRAPHIQUE DU CALENDRIER
printf ("---------------------------------\n---------------------------------\n");
//conversion de l'entier du mois en toute lettre (possible de le realiser en switch)
if (x.mois==1) printf ("JANVIER ");
else if (x.mois==2) printf ("FEVRIER ");
else if (x.mois==3) printf ("MARS ");
else if (x.mois==4) printf ("AVRIL ");
else if (x.mois==5) printf ("MAI ");
else if (x.mois==6) printf ("JUIN ");
else if (x.mois==7) printf ("JUILLET ");
else if (x.mois==8) printf ("AOUT ");
else if (x.mois==9) printf ("SEPTEMBRE ");
else if (x.mois==10) printf ("OCTOBRE ");
else if (x.mois==11) printf ("NOVEMBRE ");
else if (x.mois==12) printf ("DECEMBRE ");
//suite de l'affichage de l'en-tete du Calendrier graphique
printf ("%d\n",x.annee);
printf ("---------------------------------\n L M M J V S D semaine\n---------------------------------\n");
//affichage de l'interieur du calendrier graphique
long jx = datetoastro(x);
DATE ex = astrotodate(jx);
int i;
//cherche le 1er jour du mois
for (i = 0; i < jx%7; ++i)
printf(" ");
for (i=1;i<=nbjours_mois(x);i++,jx++)
{
{
ex = astrotodate(jx);
printf (" %2d",ex.jour);
if (jx%7==6)
printf("\n");
}
}
printf ("\n");
}
printf ("\n");
return 0;
}
//directive include des fichiers "stdio.h", "time.h", "math.h"
#include <stdio.h>
#include <math.h>
#include <time.h>
//mise en place du type "structure" de la DATE
typedef struct{ int jour, mois, annee; } DATE;
//forme classique vers forme astronomique
long datetoastro (DATE d)
{
//declarations des variables
int a,m,jourastro;
if (d.mois>2)
{a=d.annee; m=d.mois-3;}
else
{a=d.annee-1; m=d.mois+9;}
jourastro=((146097*(a/100))/4)+((1461*(a%100))/4)+(((153*m)+2)/5)+d.jour+1721119;
return jourastro;
}
//forme astronomique vers forme classique
DATE astrotodate (long jourastro)
{
//declarations des variables
int a,m,j,annee,mois,jour,q1,q2,q3;
q1=4*(jourastro-1721119)-1;
a=q1/146097;
q2=4*((q1%146097)/4)+3;
j=q2/1461;
q3=5*(((q2%1461)/4)+1)-3;
m=q3/153;
DATE d;
d.jour=(((q3%153)/5)+1);
if (m<10)
{ d.annee=100*a+j; d.mois=m+3;}
else
{d.annee=100*a+j+1;d.mois=m-9;}
return d;
}
//nb de jours dans un mois
int nbjours_mois(DATE x)
{
//convertion en astro du 1er du mois
long x_astro;
x_astro = datetoastro(x);
//convertion en astro du 1er du mois suivant
DATE y = {1, x.mois+1, x.annee};
long y_astro;
y_astro = datetoastro(y);
//calcul nb jour du mois
int nbjours_m;
nbjours_m = (y_astro - x_astro);
return nbjours_m;
}
//nb de jours dans une annee
int nbjours_annee(DATE x)
{
//convertion en astro du 1er de l'annee
long x_astro;
x_astro = datetoastro(x);
//convertion en astro du 1er de l'annee suivante
DATE y = {1, 1, x.annee+1};
long y_astro;
y_astro = datetoastro(y);
//calcul nb jour de l'annee
int nbjours_a;
nbjours_a = (y_astro - x_astro);
return nbjours_a;
}
//jour de la semaine
char jour_de_semaine(DATE x)
{
//convertion en astro de la date
long x_astro;
x_astro = datetoastro(x);
//calcul du jour de la semaine
int jour_de_s;
jour_de_s = (x_astro%7);
//conversion de l'entier en lettre du jour de la semaine (possible de le realiser en if ou switch)
//char s[]={'L','M','M','J','V','S','D'};
return jour_de_s;
}
//jour du 1er de l'annee
int prem_de_annee(DATE x)
{
DATE y = {1, 1, x.annee};
char prem_de_a;
prem_de_a=jour_de_semaine(y);
return prem_de_a;
}
//recherche du numero de semaine
int semaine(DATE x)
{
DATE y = {1, 1, x.annee};
int prem_sem;
int num_sem;
prem_sem=prem_de_annee(y);
if (prem_sem<=3) num_sem=1;
else num_sem=54;
return num_sem;
}
int main ()
{
DATE x ;
// demande du jour
/* printf (" Quelle jour? ");
scanf("%d", &x.jour);
if (x.jour>31)
{printf ("!!! Gros debile, un mois ne peux pas contenir plus de 31j !!!");
return 0;}
*/
x.jour = 1;
//demande du mois
/* printf ("\n Quel mois? ");
scanf("%d", &x.mois);
if (x.mois>12)
{printf ("!!! Mais tu es vraiment idiot, une annee comporte 12 mois !!!");
return 0;}
*/
x.mois = 1;
// demande de l'année
printf (" Quelle annee? ");
scanf("%d", &x.annee);
//afichage du numero de la premiere semaine
printf ("%d\n",semaine(x));
//boucle pour créer un calendrier graphique annuel
for (x.mois=1;x.mois<=12;x.mois++)
{
//VERSION GRAPHIQUE DU CALENDRIER
printf ("---------------------------------\n---------------------------------\n");
//conversion de l'entier du mois en toute lettre (possible de le realiser en switch)
if (x.mois==1) printf ("JANVIER ");
else if (x.mois==2) printf ("FEVRIER ");
else if (x.mois==3) printf ("MARS ");
else if (x.mois==4) printf ("AVRIL ");
else if (x.mois==5) printf ("MAI ");
else if (x.mois==6) printf ("JUIN ");
else if (x.mois==7) printf ("JUILLET ");
else if (x.mois==8) printf ("AOUT ");
else if (x.mois==9) printf ("SEPTEMBRE ");
else if (x.mois==10) printf ("OCTOBRE ");
else if (x.mois==11) printf ("NOVEMBRE ");
else if (x.mois==12) printf ("DECEMBRE ");
//suite de l'affichage de l'en-tete du Calendrier graphique
printf ("%d\n",x.annee);
printf ("---------------------------------\n L M M J V S D semaine\n---------------------------------\n");
//affichage de l'interieur du calendrier graphique
long jx = datetoastro(x);
DATE ex = astrotodate(jx);
int i;
//cherche le 1er jour du mois
for (i = 0; i < jx%7; ++i)
printf(" ");
for (i=1;i<=nbjours_mois(x);i++,jx++)
{
{
ex = astrotodate(jx);
printf (" %2d",ex.jour);
if (jx%7==6)
printf("\n");
}
}
printf ("\n");
}
printf ("\n");
return 0;
}
Bonjour,
je commence juste dans la programmation, en cours on fait les bases, style le site du zéro, et mon prof m'a dit que l'an prochain on en ferai beaucoup plus, à un niveau plus élevé... du coup je lui ai demandé ce que je pouvais faire pour essayer de m'améliorer et il m'a donné un sujet (créer un agenda électronique en ligne de commande) qu'il avait déjà donné auparavant à ses élèves et m'a dit que si je voulais je pouvais m'amuser à le faire et qu'il pourrait regarder...
Bref en fait j'ai trouvé ce calendrier que j'ai réussi à inclure dans mon programme, mais j'aimerai savoir comment faire pour afficher le numéro des semaine, et pourquoi pas afficher une semaine en entrant le numéro de celle-ci...?
Est-ce possible, trop compliqué, facile? Et pourrais-je avoir une réponse "pour débutant"? :-)
Merci beaucoup d'avance.
je commence juste dans la programmation, en cours on fait les bases, style le site du zéro, et mon prof m'a dit que l'an prochain on en ferai beaucoup plus, à un niveau plus élevé... du coup je lui ai demandé ce que je pouvais faire pour essayer de m'améliorer et il m'a donné un sujet (créer un agenda électronique en ligne de commande) qu'il avait déjà donné auparavant à ses élèves et m'a dit que si je voulais je pouvais m'amuser à le faire et qu'il pourrait regarder...
Bref en fait j'ai trouvé ce calendrier que j'ai réussi à inclure dans mon programme, mais j'aimerai savoir comment faire pour afficher le numéro des semaine, et pourquoi pas afficher une semaine en entrant le numéro de celle-ci...?
Est-ce possible, trop compliqué, facile? Et pourrais-je avoir une réponse "pour débutant"? :-)
Merci beaucoup d'avance.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
13 oct. 2012 à 23:15
13 oct. 2012 à 23:15
Merci de créer un nouveau post lorsque votre question n'a rien à voir avec le post initial.
De plus, nous ne sommes pas là pour faire vos programmes mais pour vous aider...
De plus, nous ne sommes pas là pour faire vos programmes mais pour vous aider...