Petit prob. 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 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
Bonjour,
ta variable
Si tu veux boucler su un nombre de patineur, il faut que tu fasses ... une boucle. O tu ne fais rien avec ta variable
ta variable
notess'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
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!!
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!!
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 ;).
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 ;).
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
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