Difficulté a manipuler les tableaux

Fermé
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011 - 10 nov. 2009 à 19:17
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011 - 10 nov. 2009 à 22:18
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 par
////////////////////////////////////////////////////////////­////////////////////

#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 tab_Moyenne[50];
float tab_notes [NB_NOTES];
float NotePlusBasse=10;
float NotePlusHaute=0;
float notes;
float k;
int n;
char reponse;
int nbPat,i;/* nombre de patineur traité(s).*/
float somme;/*somme des notes des juges pour un patineur.*/
float Moyenne,SomMoyenne,MoyPlus,MoyFaible;
nbPat=0;
int non_valide; /* Utilisee comme un booleen. */

/* Initialisation du tableau. */

do{ 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 );
}



/*Calcul de la somme*/


somme=0;
for(i=0;i<NB_NOTES;i++)
{
somme+=tab_notes[i];

fflush(stdin);
if(tab_notes[i]>NotePlusHaute)
NotePlusHaute=tab_notes[i];
if (tab_notes[i]<NotePlusBasse)
NotePlusBasse= tab_notes[i];}
somme-=NotePlusHaute;
somme-=NotePlusBasse;
fflush(stdin);
Moyenne= somme/6.0;
nbPat++;
printf("Nous avons traite %d patineurs\n\n",nbPat);

/*Creation de la boucle des moyenne tous les patineurs*/
for (k=0;n<k;k++){
SomMoyenne+=tab_Moyenne[k];}








//Affichage des résultats

printf(" La note moyenne du patineur : %6.2f \n", somme/6.0 );
/* printf("La note la plus grande : %6.2f \n", NotePlusHaute);
printf("La note la plus petite : %6.2f \n", NotePlusBasse);
printf("La note moyenne des patineurs est:6.2f\n",TOTAL_notes/nbPat);
printf("Le meilleur patineur a la note: 6.2f\n",patmoy[k]);
printf("Le plus mauvais patineur a la note:6.2d\n",MoyFaible)*/


printf("\n\n");

printf("\nVoulez-vous continuer ? (o/n) ");
fflush(stdin);
reponse = toupper ( getchar() );
} while(reponse== 'O'||reponse=='o');

printf("Merci!, Appuyer sur une touche pour continuer");

getch();
/* if (reponse='O');
nbPat++;
printf("Nombre de patineurs traité est %d",nbPat);*/
return 0;
}
Je m'appecois que j'ai de la difficulté a manipuler un tableau avec la boucle for. Dans ce qui devrait -etre en GRAS dans mon programme est un desir de faire un tableau de moyenne de mes patineur, mais a chaque fois que je desir faire une boucle for et faire une somme , dans ce cas ci la somme des moyenne des patineur le compilateur me renvoit toujours le message que :ist not a array ans nor a pointer.
Merci

4 réponses

Le concombre démasqué
10 nov. 2009 à 20:21
sorry, rien n'est en gras dans ton post
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
10 nov. 2009 à 21:44
   //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 par Cl
////////////////////////////////////////////////////////////­////////////////////

#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()
{    int tab_Moyenne[50];

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



/* Initialisation du tableau. */

do{     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 );
}



/*Calcul de la somme*/


somme=0;
for(i=0;i<NB_NOTES;i++)
{
somme+=tab_notes[i];

fflush(stdin);
if(tab_notes[i]>NotePlusHaute)
NotePlusHaute=tab_notes[i];
if (tab_notes[i]<NotePlusBasse)
NotePlusBasse= tab_notes[i];}
somme-=NotePlusHaute;
somme-=NotePlusBasse;
fflush(stdin);
Moyenne= somme/6.0;
nbPat++;
printf("Nous avons traite %d patineurs\n\n",nbPat);



<gras> /*Creation de la boucle des moyenne tous les patineurs*/
for (k=0;n<k;k++){
SomMoyenne+=tab_Moyenne[k];}
</gras>







//Affichage des résultats

   printf("    La note moyenne du patineur : %6.2f \n", somme/6.0 ); 

/* printf("La note la plus grande : %6.2f \n", NotePlusHaute);
printf("La note la plus petite : %6.2f \n", NotePlusBasse);
printf("La note moyenne des patineurs est:6.2f\n",TOTAL_notes/nbPat);
printf("Le meilleur patineur a la note: 6.2f\n",patmoy[k]);
printf("Le plus mauvais patineur a la note:6.2d\n",MoyFaible)*/


printf("\n\n");

printf("\nVoulez-vous continuer ? (o/n) ");
fflush(stdin);
reponse = toupper ( getchar() );
} while(reponse== 'O'||reponse=='o');

printf("Merci!, Appuyer sur une touche pour continuer");

getch();
/* if (reponse='O');
nbPat++;
printf("Nombre de patineurs traité est %d",nbPat);*/
return 0;


}








code></code>
j'ai réussus au moins a le faire souligné,,FRANCHEMENT désolé
                
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
10 nov. 2009 à 21:54
Depuis le temps que tu postes sur ce forum tu devrais savoir que pour que ton code soit lisible il faut utiliser les balise 'code' qui permettent de conserver l'indentation du code; elles sont situées à droite des balises 'souligné'.
Sur ce plan-là, pour parodier un de tes derniers posts, tu n'as pas fait de progrès ;-)))
Bonne soirée;
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
10 nov. 2009 à 21:53
bien essayé pour les balises codes ;) voilà comment ça marche :

< code >
Ton code ici {
blabla
blala
}
< /code >

(sauf qu'il ne faut pas mettre les espaces dans les balises.)
ça donne :
Ton code ici {
  blabla
  blala
}



Ensuite, concernant ton problème :
for (k=0;n<k;k++){
  SomMoyenne+=tab_Moyenne[k];
}


Et bien en effet, ce code à l'air de faire la somme des éléments dans le tableau...

sauf que 1) n<k ... tu es sûr que c'est le test que tu veux faire ? c'est plutot k<n non ? sinon n sera en général toujours plus grand que k donc la boucle ne se fera jamais....

2)tu n'as encore rien mis du tout dans tab_Moyenne ! il faut remplir tab_Moyenne avec les moyennes que tu as calculé (ou alors je n'ai pas vu si tu l'as fait, désolé)
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
10 nov. 2009 à 22:18
C'est pour cela que l'autre fois sa avait fonctionné et que cette fois ci sa ne fonctionnait pas c'est la position du code. Merci
0
Le concombre démasqué
10 nov. 2009 à 21:57
pour les styles, le plus simple est de sélectionner le texte et de cliquer le bouton du style désiré => les balises se mettent en place de part et d'autre.

pour ton pgm:
1. nulle part somMoyenne n'est initialisée (ie: somMoyenne = 0;)
2. nulle part les éléments de tab_Moyenne sont initialisés ! (ie for(i=0;i<50;tab_moyenne[i++]=0);)
3. donc ta boucle cumule des valeurs indéfinies (tab_Moyenne[i]) à une valeur indéfinie (somMoyenne)
0