Posez votre question Signaler

Petit prob. en C

Moustiquet 221Messages postés 3 octobre 2009Date d'inscription 27 juin 2011Dernière intervention - Dernière réponse le 9 nov. 2009 à 23:14
Bonjour,

////////////////////////////////////////////////////////////////////////////////            
//Programme qui prends les notes de 8 juges pour un patineur                   /
//On élimine la plus faible et la plus forte note                              /
//On calcule la moyenne et on recommence pour un autre patineur autant de fois /
//qu'on le désir. Après il faut pouvoir compter le nombre de patineur          /
//Determiner le meilleur et le plus mauvais patineur.                          /
//Programme de C 17/11/09             /                    
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////            
//Programme qui prends les notes de 8 juges pour un patineur                   /
//On élimine la plus faible et la plus forte note                              /
//On calcule la moyenne et on recommence pour un autre patineur autant de fois /
//qu'on le désir. Après il faut pouvoir compter le nombre de patineur          /
//Determiner le meilleur et le plus mauvais patineur.                          /
//Programme de Claude Bisson BISC05036104 pour M. Pierre Trochu pour le 17/11/09             /                    
////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

#define FAUX  0      /*  Constante booléenne FAUX en C.  */
#define VRAI  !FAUX  /*  Constante booléenne VRAI en C.  */

#define NB_NOTES    8  /*  Nombre de notes à traiter.  */
#define NOTE_MIN     0  /*  Note minimale.              */
#define NOTE_MAX   10  /*  Note maximale.              */

int main()
{     
      float Moyenne,SomMoyenne,MoyPlus,MoyFaible;
      float  tab_notes [NB_NOTES];
      float NotePlusBasse=10;
      float NotePlusHaute=0; 
      char reponse;
      int nbPat,i;// nombre de patineur traité(s)et i pour la bouble for.
      float somme;//somme des notes des juges pour un patineur.
      nbPat=0;
      int non_valide;  /*  Utilisee comme un booleen.  */

   /*  Initialisation du tableau.  */

   printf( "Lecture de %d du juge\n\n\n", NB_NOTES );

   for ( i = 0; i < NB_NOTES; i++ ) {
      
        

       do{  printf( "Entrez la note du juge #%d : ", i + 1 );
         fflush( stdin );
         scanf( "%f", &tab_notes[ i ] );
         non_valide = tab_notes[ i ] < NOTE_MIN || tab_notes[ i ] > NOTE_MAX;
         if ( non_valide ) {
             printf( "Erreur, note invalide\n\n" );
         }
      } while ( non_valide );          
   
}
   /*  Afficher le tableau.  */
   



   /*for ( i = 0; i < NB_NOTES; ++i ) {
      printf( "note du juge #%d : %6.2f\n", i + 1, tab_notes[ i ] );

  /*Calcul de la somme*/
  
         somme=0;
         for(i=0;i<NB_NOTES;i++)
         somme+=tab_notes[i];
         
      /*if (notes[i]>NotePlusHaute)
              NotePlusHaute=notes[i];
          if (notes[i]<NotePlusBasse)
              NotePlusBasse= notes[i]              somme-=NotePlusHaute;
              somme-=NotePlusBasse;
              
  
  

          printf("La note moyenne est       : %6.2f \n", somme/6.0 );
         /*printf("La note la plus grande : %6.2f \n", NotePlusHaute);
          printf("La notela plus petite : %6.2f \n", NotePlusBasse);*/

          printf("\n\n");
   
          printf("\nVoulez-vous continuer ? (o/n) ");
          fflush(stdin);
          /*reponse = toupper ( getchar() );

          /*while (reponse == 'O');
          if (reponse=='O');*/
            nbPat++;
            printf("On a traite %d patineurs\n", nbPat);
            while (reponse == 'O');
            if (reponse=='O');
         getch();
         
   

return 0;
}




     

  
    
 


#include <stdio.h>

#define FAUX  0      /*  Constante booléenne FAUX en C.  */
#define VRAI  !FAUX  /*  Constante booléenne VRAI en C.  */

#define NB_NOTES    8  /*  Nombre de notes à traiter.  */
#define NOTE_MIN     0  /*  Note minimale.              */
#define NOTE_MAX   10  /*  Note maximale.              */

int main()
{     
      float Moyenne,SomMoyenne,MoyPlus,MoyFaible;
      float  tab_notes [NB_NOTES];
      float NotePlusBasse=10;
      float NotePlusHaute=0; 
      char reponse;
      int nbPat,i;// nombre de patineur traité(s)et i pour la bouble for.
      float somme;//somme des notes des juges pour un patineur.
      nbPat=0;
      int non_valide;  /*  Utilisee comme un booleen.  */

   /*  Initialisation du tableau.  */

   printf( "Lecture de %d du juge\n\n\n", NB_NOTES );

   for ( i = 0; i < NB_NOTES; i++ ) {
      
        

       do{  printf( "Entrez la note du juge #%d : ", i + 1 );
         fflush( stdin );
         scanf( "%f", &tab_notes[ i ] );
         non_valide = tab_notes[ i ] < NOTE_MIN || tab_notes[ i ] > NOTE_MAX;
         if ( non_valide ) {
             printf( "Erreur, note invalide\n\n" );
         }
      } while ( non_valide );          
   
}
   /*  Afficher le tableau.  */
   



   /*for ( i = 0; i < NB_NOTES; ++i ) {
      printf( "note du juge #%d : %6.2f\n", i + 1, tab_notes[ i ] );

  /*Calcul de la somme*/
  
         somme=0;
         for(i=0;i<NB_NOTES;i++)
         somme+=tab_notes[i];
         
       /*if (notes[i]>NotePlusHaute)
              NotePlusHaute=notes[i];
          if (notes[i]<NotePlusBasse)
              NotePlusBasse= notes[i];*/
              somme-=NotePlusHaute;
              somme-=NotePlusBasse;
              
  
  

          printf("La note moyenne est       : %6.2f \n", somme/6.0 );
         /*printf("La note la plus grande : %6.2f \n", NotePlusHaute);
          printf("La notela plus petite : %6.2f \n", NotePlusBasse);*/

          printf("\n\n");
   
          printf("\nVoulez-vous continuer ? (o/n) ");
          fflush(stdin);
          /*reponse = toupper ( getchar() );

          /*while (reponse == 'O');
          if (reponse=='O');*/
            nbPat++;
            printf("On a traite %d patineurs\n", nbPat);
            while (reponse == 'O');
            if (reponse=='O');
         getch();
         
   

return 0;
}




     

  
    
 

Le texte souligné devrait fonctionner,mais lorsque j'enlève le/* et*/ on me renvoit un message du compilateur
nor array nor pointor pour les 4lignes
En plus si vous regarder les accolade, elle me semble pas a la bonne place pour que mon programme recommenc e avec une reponse oui, mais c'est la seul facon qu'il fonctionne. Si quelqu'un a une idée Merci.J'aimerais bien solutionner ce problème pour pouvoir continuer ce programme et finalement le finir en ajoutant une boucle pour traiter plusieurs patineurs Merci
Lire la suite 

Petit prob. en C »

5 réponses
Réponse
+0
moins plus
Merde massage dedoublé
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

ta variable
notes
s'appelle maintenant
tab_notes
...

Si tu veux boucler su un nombre de patineur, il faut que tu fasses ... une boucle. O tu ne fais rien avec ta variable
reponse
Ajouter un commentaire
Réponse
+0
moins plus
Salut
Maintenant ca fontionne, mais je sais pas pourquoi dans ma tête a moi j'avais le saentiment que j'avais essayé cette solution, mais peut-être que j'avais determiner une autre variable notes et cela causait "un conflit".
En tout cas je te remercie!!
Pacorabanix - 9 nov. 2009 à 22:32
c'est tout à fait normal, le gros problème dans la programmation c'est en partie de se souvenir de ce qu'on fait :P .

D'ailleurs, et désolé de t'ennuyer encore avec ça, mais un des but d'écrire clairement son programme. Ici, tu as mis une indentation, mais elle pas très utile, car tu fais tes espacements un peu n'importe comment.

Il faut que ce soit trs rigide, comme ça tu auras plus de "temps de cerveau" disponible pour mieux voir tes variables plutot que de te concentrer sur savoir où tu en es.

Pour être plus précis : donne-toi un nombre d'espacement à chaque indentation (par exemple 2 ou 3) et respecte-le.

N'indente (=mettre des espaces devant) que si tu commences un nouveau bloc avec {. Ne réduis tes indentations que lorsque tu fermes un bloc avec }.

Normalement si tu utilise un éditeur de code quelqu'il soit, il doit y avoir une commande "Indenter" ou "ajouter une indentation". Apprends le raccourci par coeur ;).
Ajouter un commentaire
Réponse
+0
moins plus
En C, il ne faut pas mettre "fflush(stdin);" ça marche pas ;-))).
Sinon, tu n'as pas besoin de t'embêter à redéfinir FAUX etc. Le type booléen existe en C iso 99. Et si tu me dis que t'es en C ansi, je te répondrai que dans ce cas tu n'as pas le droit d'utiliser les commentaires // ;-))).

Et un dernier conseil, oublie les float. Dans la plupart des cas, le double est conseillé (à part pour le système embarqué où l'espace est critique).

Cdlt
Ajouter un commentaire
Ce document intitulé « Petit prob. en C » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook