Problème en C
Moustiquet
Messages postés
212
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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 Claude Bisson BISC05036104 //////////////////////////////////////////////////////////////////////////////// #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. */ #define NB_MOY 100 int main() /*Declaration des variable*/ { float tab_Moyenne[NB_MOY];/*Tableau des moyennes des patineurs*/ float tab_notes [NB_NOTES]; /*Tableau des notes des juges*/ float NotePlusBasse=10; float NotePlusHaute=0; float notes; int k;/*Pour compteur dans la boucle des moyenne*/ char reponse;/*Pour la boucle de chaque patineur*/ 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; /*initialisation du compteur des patineurs*/ 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++ ) { /*Boucle do while pour calculer et mettre les valeurs dans un tableau des juges*/ 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 ); } /* Fin de la boucle for*/ /*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];} /*Determine les sommes les plus haute et plus faible pour calculer les moyenne*/ somme-=NotePlusHaute; somme-=NotePlusBasse; /*Comptage des patineurs*/ fflush(stdin); nbPat++; printf("Nous avons traite %d patineurs\n\n",nbPat); /* ininialisation du tableau des moyenne*/ SomMoyenne=0; for(i=0;k<NB_MOY;k++){ SomMoyenne+=tab_Moyenne[k] ; if (tab_Moyenne[k]<MoyFaible) MoyFaible=tab_Moyenne[k]; if (tab_Moyenne[k]>MoyPlus) MoyPlus=tab_Moyenne[k];} //Affichage des résultats printf(" La note moyenne du patineur : %6.2f \n", somme/6.0 ); printf("La note moyenne des patineurs est:%6.2f\n",SomMoyenne/nbPat); printf("Le meilleur patineur a la note: 6.2f\n",MoyPlus); 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(); return 0; } Lecture de 8 du juge Entrez la note du juge #1 : 2.5 Entrez la note du juge #2 : 2.5 Entrez la note du juge #3 : 2.5 Entrez la note du juge #4 : 2.5 Entrez la note du juge #5 : 2.5 Entrez la note du juge #6 : 2.5 Entrez la note du juge #7 : 1 Entrez la note du juge #8 : 5 Nous avons traite 1 patineurs La note moyenne du patineur : 2.50 La note moyenne des patineurs est: 0.00 Le meilleur patineur a la note: 6.2f Le plus mauvais patineur a la note:6.2d Voulez-vous continuer ? (o/n) o Lecture de 8 du juge Entrez la note du juge #1 : 3 Entrez la note du juge #2 : 2 Entrez la note du juge #3 : 1.8 Entrez la note du juge #4 : 2.5 Entrez la note du juge #5 : 2.6 Entrez la note du juge #6 : 2.5 Entrez la note du juge #7 : 1 Entrez la note du juge #8 : 5 Nous avons traite 2 patineurs La note moyenne du patineur : 2.40 La note moyenne des patineurs est: 0.00 Le meilleur patineur a la note: 6.2f Le plus mauvais patineur a la note:6.2d Voulez-vous continuer ? (o/n) n Merci!, Appuyer sur une touche pour continuer
Pour connaitre la moyenne des sommes j'ai utiliser ce qui est en gras, (un tableau de moyenne dans lequelle je pensait que les notes des patineurs se mettrait automatiquement)mais le problème c'est que quand je fait l'utilisation du programme je pensait qu'il était pour cumuler les moyenne a l'aide de mon compteur de patineur et ainsi me permettre de determiner le meilleur et le plus faible patineur, mais malheureusement ca fonctionne pas. Pouvez vous m'aider...merci
6 réponses
ça en devient pénible tes topics redondants. qui plus est, maintenant que tu as isolé la partie problématique, tu pourrais te contenter de ne poster que ce qui pose problème (précédé de déclarations et initialisations).
Voici donc mon dernier coup de main:
comme pour les précédents, tab_moyenne n'est pas initialisé ! il y a donc dedans n'importe quoi. Et tu cumules ce n'importe quoi dans sommeMoyenne
Voici donc mon dernier coup de main:
comme pour les précédents, tab_moyenne n'est pas initialisé ! il y a donc dedans n'importe quoi. Et tu cumules ce n'importe quoi dans sommeMoyenne
Tu semble pas comprendre que j'ai a peu pres 2 fois et demi ton âge avec a peu près aucunne notion en informatique...mise a part 10 fois plus de problème de santé que toi...la 99.9999% des gens comme moi, je passe tout simplement de poster sur ce genre de site...DONC CRISSE DE TABARTAQUE SI SA T 'INTERESSE PAS DE REPONDRE CHANGE DE PLACE ET FOURRE TOI LES DANS LU CUL.
/* ininialisation du tableau des moyenne*/ <gras> SomMoyenne=0;</gras> for(i=0;k<NB_MOY;k++){ SomMoyenne+=tab_Moyenne[k] ; if (tab_Moyenne[k]<MoyFaible) MoyFaible=tab_Moyenne[k]; if (tab_Moyenne[k]>MoyPlus) MoyPlus=tab_Moyenne[k];}
JE NE COMPRENDS PAS...JE NE COMPREND PAS, car les valeurs des moyennes sont cumuler au fur et a mesure que le programme s'execute. Contrairement au valeur donné par les juges. Je sais bien que se code va me donner sans arret des valeur de zero, mais je ne comprends pas de qu'elle facon il va aller chercher ces moyenne, Même si on me dit que'il n'y a pas d'ininialisation cela change rien car je ne saisi pas comment, Est ce que ma question est suffisamment clair, car moi aussi j'en n'ai mare de se crisse de programme.
CE message NE SADRESSE SURTOUT PAS AU CONCOMBRE
Ca prends beaucoup d'humiliter pour POSTER ICI' CAR CERTAIN SONT VRAIMENT PAS SYMPATHIQUE
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
salut
une variable non initialisée, c'est une variable dans laquelle rien n'a été stocké pour l'instant. et tant qu'on n'y stocke rien, on ne peut être sûr de son contenu.
c'est pour cette raison que lorsque tu démarres le calcul de la somme, tu stockes 0 dans somme (s'il s'y trouvait 235478, la somme n'aurait aucun sens). par la suite, ta boucle passe en revue tous les éléments de tab_notes et additionne chacun de ces éléments à somme. c'est propre.
lorsqu'ensuite tu fais SomMoyenne+=tab_Moyenne[k], peux-tu nous expliquer ce qu'il y a dans tab_Moyenne ?
qu'est-ce qui est donc ajouté à somMoyenne ? à quel moment as-tu stocké une valeur dans tab_Moyenne[0] ? dans tab_Moyenne[1] ?
en fait, tu n'as jamais rien stocké dans tab_Moyenne[0] ni tab_Moyenne[1] ni tous les autres éléments de tab_Moyenne : "tu n'as pas initialisé tab_Moyenne". ton résultat, tes calculs, tes tests, tout est faussé simplement parce qu'on ne sait pas ce qu'il y a dans tab_Moyenne.
donc, rajoute une section qui initialise tab_Moyenne: une boucle ou je ne sais quoi où l'on lira tab_Moyenne[unevariable] = suivi d'une valeur, d'un calcul, quelque chose
Pour la suite: évite de créer un nouveau topic, continue plutôt celui-là ; quant à tes messages ils s'adressent à tout le monde, y compris ton pote le concombre... dsl
une variable non initialisée, c'est une variable dans laquelle rien n'a été stocké pour l'instant. et tant qu'on n'y stocke rien, on ne peut être sûr de son contenu.
c'est pour cette raison que lorsque tu démarres le calcul de la somme, tu stockes 0 dans somme (s'il s'y trouvait 235478, la somme n'aurait aucun sens). par la suite, ta boucle passe en revue tous les éléments de tab_notes et additionne chacun de ces éléments à somme. c'est propre.
lorsqu'ensuite tu fais SomMoyenne+=tab_Moyenne[k], peux-tu nous expliquer ce qu'il y a dans tab_Moyenne ?
qu'est-ce qui est donc ajouté à somMoyenne ? à quel moment as-tu stocké une valeur dans tab_Moyenne[0] ? dans tab_Moyenne[1] ?
en fait, tu n'as jamais rien stocké dans tab_Moyenne[0] ni tab_Moyenne[1] ni tous les autres éléments de tab_Moyenne : "tu n'as pas initialisé tab_Moyenne". ton résultat, tes calculs, tes tests, tout est faussé simplement parce qu'on ne sait pas ce qu'il y a dans tab_Moyenne.
donc, rajoute une section qui initialise tab_Moyenne: une boucle ou je ne sais quoi où l'on lira tab_Moyenne[unevariable] = suivi d'une valeur, d'un calcul, quelque chose
Pour la suite: évite de créer un nouveau topic, continue plutôt celui-là ; quant à tes messages ils s'adressent à tout le monde, y compris ton pote le concombre... dsl
Juste pour apporter une précision :
une variable non initialisée, c'est une variable dans laquelle rien n'a été stocké pour l'instant. et tant qu'on n'y stocke rien, on ne peut être sûr de son contenu.
Cela dépend de la variable. Une variable globale ou statique sera initialisée automatiquement à l'élément nul (0 pour un integer, NULL pour un pointeur).
une variable non initialisée, c'est une variable dans laquelle rien n'a été stocké pour l'instant. et tant qu'on n'y stocke rien, on ne peut être sûr de son contenu.
Cela dépend de la variable. Une variable globale ou statique sera initialisée automatiquement à l'élément nul (0 pour un integer, NULL pour un pointeur).
Salut,
Tout d'abord, c'est dommage de redéfinir les macros FAUX et VRAI lorsque tu peux utiliser le type _Bool.
Ceci est vrai si t'es en iso C99, mais comme tu as utilisé les doubles slash pour les commentaires, je suppose que t'es pas en ANSI ;-))).
fflush( stdin );
Il ne faut jamais utiliser cette instruction.
Un autre conseil, oublie les float. Dans la plupart des cas, le double est conseillé (à part pour le système embarqué où l'espace est critique).
Pour le reste, Le chaudron pétillant a dit également ce qui clochait.
Cdlt
Tout d'abord, c'est dommage de redéfinir les macros FAUX et VRAI lorsque tu peux utiliser le type _Bool.
Ceci est vrai si t'es en iso C99, mais comme tu as utilisé les doubles slash pour les commentaires, je suppose que t'es pas en ANSI ;-))).
fflush( stdin );
Il ne faut jamais utiliser cette instruction.
Un autre conseil, oublie les float. Dans la plupart des cas, le double est conseillé (à part pour le système embarqué où l'espace est critique).
Pour le reste, Le chaudron pétillant a dit également ce qui clochait.
Cdlt