Affichage d'un calendrier en langage c
kheweul86
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je programme en c et je voudrais afficher le calendrier de l'année 2008.
je sollicite votre aide . je vous remercie d'avance.
je programme en c et je voudrais afficher le calendrier de l'année 2008.
je sollicite votre aide . je vous remercie d'avance.
A voir également:
- Affichage d'un calendrier en langage c
- Langage ascii - Guide
- Mon calendrier - Télécharger - Santé & Bien-être
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Calendrier partagé google - Guide
- Affichage double ecran - 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.