Petit prob. en C

Fermé
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011 - 9 nov. 2009 à 12:13
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 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

4 réponses

Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
9 nov. 2009 à 12:22
Merde massage dedoublé
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
9 nov. 2009 à 12:25
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
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
9 nov. 2009 à 17:31
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!!
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
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 ;).
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
9 nov. 2009 à 23:14
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
0