Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1493 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Programme colonne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programme colonne

n°2171859
rolague
Posté le 19-01-2013 à 22:57:00  profilanswer
 

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

mood
Publicité
Posté le 19-01-2013 à 22:57:00  profilanswer
 

n°2171909
gilou
Modérateur
Modzilla
Posté le 20-01-2013 à 12:36:37  profilanswer
 

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é!  --
n°2171923
rolague
Posté le 20-01-2013 à 14:25:56  profilanswer
 

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.

n°2171933
gilou
Modérateur
Modzilla
Posté le 20-01-2013 à 15:50:03  profilanswer
 

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é!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Programme colonne

 

Sujets relatifs
Programme en CProgramme informatique
je veux commander ma carte son (ON/OFF) via un petit programme...Programme morpion
[C/Reseau] proxy FTP (simple) en CRecherche d'une valeur et copie de la colonne
Commenter un programmeProgramme automatisation.
Programme de damesProgramme VBA qui insere un nom de colonne
Plus de sujets relatifs à : Programme colonne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR