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
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.
A voir également:

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;
}
22
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.
0
salut:
je veux un programme qui affiche ce triangle
1
12
123
1234
merçi d'avance
0
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
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...
0