Programme colonne

Programme colonne - C - Programmation

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;  
}
 

Reply

Marsh Posté le 19-01-2013 à 22:57:00   

Reply

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+,


Message édité par gilou le 20-01-2013 à 12:38:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

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.

Reply

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed