Probleme d'affichage avec les structures.

Probleme d'affichage avec les structures. - C - Programmation

Marsh Posté le 28-04-2004 à 20:24:26    

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #define taille 10
  4. int cpt=0 ,nbeleves;
  5. int i,c=0;
  6. int choix=1;
  7. int main()
  8. {
  9.       struct eleve_2 {char nom[10];
  10.                     unsigned int age:7;} ;
  11.       struct eleve_2 peleve[taille] ;
  12.   while (choix==1)
  13.      {
  14.   //saisie de nom et age
  15. printf("=================\n" ) ;
  16. printf("tapez un nom :" ) ;
  17. scanf("%s",peleve[cpt].nom)   ;
  18. //je sais Taz vaut mieux utiliser gets ;)mais la je test un autre truc  
  19. printf("=================\n" ) ;
  20. printf("Tapez un age :" );
  21. scanf("%d",&i) ;
  22. peleve[cpt].age = i ;
  23. //boucle
  24. printf("===========\n" );
  25. printf("Voullez vous continuez :" ) ;
  26. scanf("%d",&choix) ;
  27. //agrementation de cpt et i remise a 0
  28. i=0;
  29. cpt++;
  30.     }
  31. //nbeleves est egale au nombres de cpt
  32. nbeleves = cpt ;
  33. //boucle d'affichage
  34.    for(i=0;i<nbeleves;i++) ;
  35.   {
  36. printf("%10s %10d\n",peleve[c].nom,peleve[c].age) ;
  37. c++ ;
  38.   }
  39.       system("PAUSE" );
  40.       return 0;
  41. }


 
Pourquoi la boucle d'affichage ne fonctionne pas ??? j'ai tout essayer .. ca marche en partie si je fait nbeleves-1 dans for et encor sa n'affiche que la premiere structeur entree...


Message édité par ombreee le 29-04-2004 à 19:25:09
Reply

Marsh Posté le 28-04-2004 à 20:24:26   

Reply

Marsh Posté le 28-04-2004 à 20:40:03    

tu peux aussi utiliser puts a la place de printf (si c pour afficher un char* uniquement)
et pas de fflush(stdin), fait fflush(stdout) avant t scanf
et ca existe pas non plus les commentaires  "//" en c (sauf c99)
et fait gets pour saisir le nom, ton scanf sur nom[10] donne des frisson

Reply

Marsh Posté le 28-04-2004 à 20:50:49    

skelter a écrit :

tu peux aussi utiliser puts a la place de printf (si c pour afficher un char* uniquement)
et pas de fflush(stdin), fait fflush(stdout) avant t scanf
et ca existe pas non plus les commentaires  "//" en c (sauf c99)
et fait gets pour saisir le nom, ton scanf sur nom[10] donne des frisson


 
oui tous sa je sais merci j'ai fait un commentaire special a taz lol ^^
 
mais mon probleme ne vient pas de la (enfin je croi)

Reply

Marsh Posté le 28-04-2004 à 21:29:41    

Code :
  1. for(i=0;i<nbeleves;i++) ;


Il n'y a pas un truc en trop ? :D
 
Pourquoi tu utilises des variables globales ?
Tu peux te passer de la variable cpt.
Pour la boucle de saisie il faut aussi vérifier que tu ne dépasses pas le nombre maximal d'élève : taille (D'ailleurs le nom devrait être en majuscule, c'est une constante :??:).
Pourquoi tu utilises la variable i pour lire l'âge ?
"Voullez vous" => "Voulez-vous" ?
"agrementation" => "incrémentation"


Message édité par darkoli le 28-04-2004 à 21:38:29
Reply

Marsh Posté le 28-04-2004 à 21:31:36    

darkoli a écrit :

Code :
  1. for(i=0;i<nbeleves;i++) ;


Il n'y a pas un truc en trop ? :D


lol et pourtant quand il met nbeleves-1 ca marche :D


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 28-04-2004 à 21:36:00    

myst78 a écrit :

lol et pourtant quand il met nbeleves-1 ca marche :D


Peut-être que le dernier âge qu'il avait entré était entre 0 et nbeleves-1. :D

Reply

Marsh Posté le 29-04-2004 à 19:27:15    

Toujours pas ca (merci de corrige mes fautes ;) ) La je ne comprend vraiment pas ... je prend une autre variable a i c'est pareil mais pourquoi qu'une seule structure s'affiche seulement !! ^^  :cry:  :lol:

Reply

Marsh Posté le 29-04-2004 à 20:36:39    

ombreee a écrit :

Toujours pas ca (merci de corrige mes fautes ;) ) La je ne comprend vraiment pas ... je prend une autre variable a i c'est pareil mais pourquoi qu'une seule structure s'affiche seulement !! ^^  :cry:  :lol:


Tu as enlevé le ';' (point virgule) de trop ?

Reply

Marsh Posté le 29-04-2004 à 22:18:14    

sinon pour faire plus propre, au lieu de faire des

Code :
  1. int choix=1;
  2. while(choix==1)
  3. {
  4. }


 
on fait plutot des
 

Code :
  1. int choix;
  2. do
  3. {
  4. }
  5. while(choix==1);


 
c'est plus joli je trouve :o
 
A+

Reply

Marsh Posté le 30-04-2004 à 00:13:59    

Babouchka a écrit :

sinon pour faire plus propre, au lieu de faire des

Code :
  1. int choix=1;
  2. while(choix==1)
  3. {
  4. }


 
on fait plutot des
 

Code :
  1. int choix;
  2. do
  3. {
  4. }
  5. while(choix==1);


 
c'est plus joli je trouve :o
 
A+


Je préfère la première. :D
Je n'aime pas trop les variables non initialisées.
Enfin chacun fait comme il le souhaite (tant que ça reste "propre" et lisible).

Reply

Marsh Posté le 30-04-2004 à 00:13:59   

Reply

Marsh Posté le 30-04-2004 à 19:42:57    

darkoli a écrit :

Tu as enlevé le ';' (point virgule) de trop ?


 
Oula j'etait tellement preocupe par ma boucle que je n'est pas fait attention a ca ! mouarf  :sol:  merci de ton aide il c'est avere que sa soit ca :lol:  :jap:  :jap:  
 

Reply

Sujets relatifs:

Leave a Replay

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