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

  FORUM HardWare.fr
  Programmation
  C

  [C]Problème affichage Calendrier en C (débutant)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Problème affichage Calendrier en C (débutant)

n°2218304
forack
Posté le 01-02-2014 à 12:49:22  profilanswer
 

Bonjour ,  
 
On nous a demandé de creer un programme qui génère le calendrier 2014 (en utilisant les boucles/tableaux/test et les 2 fonctions stdio.h et conio.h)  
 
je l'ai fait et voici le programme  
 
#include<stdio.h>  
#include <conio.h>  
 
main()  
 
{  
 
int i,a=0,o,j[12]={31,28,31,30,31,30,31,31,30,31,30,31  
};  
 
char m[12][20]={"JANVIER","FEVRIER","MARS","AVRIL","MAI  
","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","N  
OVEMBRE","DECEMBRE"};  
 
printf("\t\t----------Calendrier annee 2014----" );  
 
for(i=0;i<12;i++)  
 
{  
 
printf("\n\t\t\t%s\t",m[i]);  
 
printf("\nLUN\tMAR\tMER\tJEU\tVEN\tSAM\tDIM\n" );  
printf("\t\t" );  
for(o=1;o<=j[i];o++)  
{printf("%d\t",o); a=a+1;  
if(a==5 || a==12|| a==19 || a==26)printf("\n" );} a=0;  
printf("\n" );  
 
 
}  
getch();  
}  
 
 
Ce qui donnera ça http://www.noelshack.com/2014-05-1 [...] apture.jpg (les trois premiers mois sont visibles)  
et donc y a une répitition et un problème lié a la disposition des dates selon les jours de la semaines , valable seulement pour Janvier , mais se repercute sur les autres mois a cause de la boucle.  
 
Need help svp

mood
Publicité
Posté le 01-02-2014 à 12:49:22  profilanswer
 

n°2218306
breizhbugs
Posté le 01-02-2014 à 13:28:44  profilanswer
 

utilise les balises code:

Code :
  1. #include<stdio.h> 
  2. #include <conio.h>  // inutile
  3. main() 
  4.     int i,a=0,o,j[12]={31,28,31,30,31,30,31,31,30,31,30,31  }; 
  5.     char m[12][20]={"JANVIER","FEVRIER","MARS","AVRIL","MAI","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"}; 
  6.     printf("\t\t----------Calendrier annee 2014----" ); 
  7.     for(i=0;i<12;i++) 
  8.      { 
  9.          printf("\n\t\t\t%s\t",m[i]); 
  10.          printf("\nLUN\tMAR\tMER\tJEU\tVEN\tSAM\tDIM\n" ); 
  11.         printf("\t\t" ); 
  12.         for(o=1;o<=j[i];o++) 
  13.         {
  14.             printf("%d\t",o); a=a+1; 
  15.             if(a==5 || a==12|| a==19 || a==26)printf("\n" );} a=0; 
  16.             printf("\n" ); 
  17.         }
  18.      }// il manquait une }   
  19.      getch(); 
  20. }


 
problème ligne 13: tu ajoutes des tabulations qui décale l'affichage du premier jour de chaque mois (puisque c'est dans une boucle!).
Ne devrais d'ailleurs tu pas utiliser une fonction pour obtenir le jour du 1 janvier afin de faire ton affichage correctement (plutôt que de mal utiliser la tabulation pour atterrir sur le mercredi!)? (faut aussi penser à calculer l'affichage du nombre de jours de février)


Message édité par breizhbugs le 01-02-2014 à 13:32:49

---------------
Seul Google le sait...
n°2218307
forack
Posté le 01-02-2014 à 13:35:30  profilanswer
 

Pardon j'ai omis.

n°2218308
forack
Posté le 01-02-2014 à 13:41:05  profilanswer
 

Ah désolé , je n'ai pas vu le message éditer , sinon Le prof a été évasif.
 
Du coup je ne sais pas vraiment comment m'y prendre (les calcules/disposition et tout)
Si vous pouvez m'aider
je suis preneur
 

n°2218337
breizhbugs
Posté le 01-02-2014 à 23:57:26  profilanswer
 

Testes ce petit programme:

Code :
  1. #include <stdio.h>
  2. #include <time.h>
  3. int main(int argc, char *argv[])
  4. {
  5. struct tm quand={0};
  6. __time64_t result;
  7. char jour[7][15]={"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"};
  8. char moisT[12][15]={"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"};
  9. int moisN;
  10. for (moisN = 0; moisN < 12; moisN++)
  11. {
  12.  // on remplit la structure avec les champs que l'on connait:
  13.  quand.tm_mday=1;     // le 1er
  14.  quand.tm_mon=moisN;    // janvier
  15.  quand.tm_year=2014-1900;  //2014 // -> on retranche 1900 car l'année compte a partir de 1900, voir la doc des fonctions de temps
  16.  // attention la structure n'est pas correcte puisque l'on ne connait pas tous les champs on va utiliser mktime qui va la valider:
  17.  if( (result = mktime( &quand )) != (time_t)-1 ) // mktime corrige la structure qui contient des champs incorrects pour l'instant
  18.  {
  19.   printf ("le 1er %s 2014 est un %s\n", moisT[moisN], jour[quand.tm_wday]); // on peut s'en servir pour savoir de quel jour c'était
  20.  }
  21. }
  22. return 0;
  23. }


 
Maintenant, tu dois pouvoir utiliser "quand.tm_wday" pour calculer combien de tabulation tu dois mettre au début du mois!


---------------
Seul Google le sait...
n°2218797
forack
Posté le 06-02-2014 à 11:29:54  profilanswer
 

Merci pour ta code breizhbugs , mais je dois utilisé que les deux fonctions conio.h et stdio.h et non time.
J'ai modifié un peu mon programme et il me reste plus qu'a trouver un moyen pour couper le nombre de jour a dimanche  
et revenir sur le lundi
 
Merci de m'éclairer
 

Code :
  1. #include<stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int i,o,z,e,j[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  6. int p[12]={3,6,6,2,4,7,2,5,1,3,6,1};
  7. //int r[12]={7,7,7,7,7,7,7,7,7,7,7,7};
  8. char m[12][20]={"JANVIER","FEVRIER","MARS","AVRIL","MAI","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"};
  9. printf("\t\t----------Calendrier annee 2014----" );
  10. for(i=0;i<12;i++)
  11. {
  12. printf("\n\n\t\t\t%s\n\t",m[i]);
  13. printf("\nLUN\tMAR\tMER\tJEU\tVEN\tSAM\tDIM\n" );
  14. for (e=1;e<=p[i];e++) {
  15.     printf("\t",e);
  16. }
  17. for(o=1;o<=j[i];o++)
  18.                      {printf("%d\t",o);
  19. }
  20. }
  21. getch();
  22. }

n°2218810
forack
Posté le 06-02-2014 à 14:46:32  profilanswer
 

c'est bon, je l'ai terminé!
 
@+


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

  [C]Problème affichage Calendrier en C (débutant)

 

Sujets relatifs
Affichage avec condition en jstl[Résolu] Calendrier perpétuel des jours fériés.
problème Javascript sous safari[ PHP / Probleme ] PHP indisponible sur mon site
[RESOLU][ PHP / Probleme ] unexpected end of fileaffichage d'une structure
[Résolu] A l'aide ! (C++ IA)[C] tgetstr et tparm
mini-projet en language C 
Plus de sujets relatifs à : [C]Problème affichage Calendrier en C (débutant)


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