Programme colonne - C - Programmation
Marsh Posté le 20-01-2013 à 12:36:37
Tel que je vois les choses, il va falloir que tu crées un buffer de 4 x 5 lignes de 80 caractères représentant ta sortie (voire 6 ou 7 lignes, si on compte la ligne des noms de mois et celle des noms de jours)
- tu les initialises a ' ', le caractère espace
- tu écris tes lignes de mois dedans (ça va te permettre de te positionner pour écrire à droite, au milieu ou à gauche)
- quand c'est fini, tu écris tes lignes à l'écran
A+,
Marsh Posté le 20-01-2013 à 14:25:56
Merci à toi gilou. Après avoir posté ce post hier j'ai tenté des recherches autour des buffers (un ami m'a vaguement émis l'idée sans d'autres informations).
Pourrais tu via un exemple simple m'expliquer comment fonctionne un buffer ? De façon à pouvoir comprendre cet outil inconnu de moi même et dont internet ne procure pas beaucoup d'exemple et par la suite pouvoir l'utiliser dans mon cas.
Marsh Posté le 20-01-2013 à 15:50:03
Bonjour,
Un buffer, c'est tout simplement un tableau de caractères, dans lequel on écrit des choses qu'on réutilise ensuite.
Comme tu ne peux pas écrire directement à l'écran, vu que tu dois revenir "en arrière" après avoir écrit un mois, pour écrire le mois suivant, tu écris ton calendrier dans un buffer, et quand tu as écrit ton calendrier, tu le recopies à l'écran.
A+,
Marsh Posté le 19-01-2013 à 22:57:00
Bonjour,
J'ai quelques problèmes dans mon projet C.
Le but étant d'afficher un calendrier. Mon problème étant de trouver un moyen de créer une sorte de tableau 3 colonnes (4 lignes après itération). j'aimerais après avoir afficher janvier, refaire ma bouche mais a droite de janvier, puis de meme pour le 3eme mois et ensuite revenir à la ligne au moment de revenir dans la 1ere colonne. J'aimerais donc réussir à créer une condition pour laquelle je suis dans la colonne gauche milieu ou droite.
Merci.
Voici mon prog :
#include <stdio.h>
#include <stdlib.h>
int jour_dans_mois[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char tmois[13][10]={" ","janvier","fevrier","mars","avril","mai","juin","juillet","aout","septembre","octobre","novembre","decembre"};
int entrerannee(void)
{
int annee;
printf("Entrer une annee a partir de 1583 : " );
scanf("%d", &annee);
return annee;
}
int determinationdujourun(int annee)
{
int jourun;
int d1, d2, d3;
d1 = (annee - 1.)/ 4.0;
d2 = (annee - 1.)/ 100.;
d3 = (annee - 1.)/ 400.;
jourun = (annee + d1 - d2 + d3) %7;
return jourun;
}
int bissextile(int annee)
{
if(annee% 4 == 0 && annee%100 != 0 || annee%400 == 0)
{
jour_dans_mois[2] = 29;
return 1;
}
else
{
jour_dans_mois[2] = 28;
return 0;
}
}
void calendrier(int annee, int jourun)
{
int mois, jour;
printf("\n\n %d",annee);
for ( mois = 1; mois <= 12; mois++ )
{
printf("\n\n\t %s\t", tmois[mois]);
printf("\ndim lun mar mer jeu ven sam\n" );
for ( jour = 1; jour <= 1 + jourun * 5; jour++ )
{
printf(" " );
}
for ( jour = 1;jour <= jour_dans_mois[mois]; jour++ )
{
printf("%2d", jour );
if ( ( jour + jourun ) % 7 > 0 )
printf(" " );
else
printf("\n " );
}
jourun = ( jourun + jour_dans_mois[mois] ) % 7;
}
}
void calendrierdumois (int annee, int mois, int jourun)
{
int jour;
printf("%s ",tmois[mois]);
printf("\ndim lun mar mer jeu ven sam\n" );
for ( jour = 1; jour <= 1 + jourun * 5; jour++ )
{
printf(" " );
}
for ( jour = 1; jour <= jour_dans_mois[mois]; jour++ )
{
printf("%2d", jour );
if ( ( jour + jourun ) % 7 > 0 )
printf(" " );
else
printf("\n " );
}
jourun = ( jourun + jour_dans_mois[mois] ) % 7;
}
int main(void)
{
int choix, annee, mois, jour, jourun;
printf("Que voulez vous faire:\n" );
printf("Lire le calendrier d'une année taper 1\n" );
printf("Lire le calendrier d'un mois taper 2 \n" );
printf("Lire une date particuliere taper 3\n==>" );
scanf ("%d",&choix);
switch (choix)
{
case 1: annee = entrerannee();
jourun = determinationdujourun(annee);
bissextile(annee);
calendrier(annee, jourun); break;
case 2: annee = entrerannee();
jourun = determinationdujourun(annee);
bissextile(annee);
printf("Entrer un mois entre 1 et 12: " );
scanf ("%d",&mois);
calendrierdumois(annee,mois, jourun);break;
case 3: annee = entrerannee();
jourun = determinationdujourun(annee);
bissextile(annee);
printf("Entrer un mois entre 1 et 12: " );
scanf ("%d",&mois);
printf("Entrer un jour entre 1 et 31: " );
scanf ("%d",&jour);break;
default: printf("Erreur\n" );
}
printf("\n" );
return 0;
}