Exercice en c (j'ai besoin de votre aide)

Résolu/Fermé
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010 - 16 janv. 2010 à 16:34
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 - 16 janv. 2010 à 17:54
Bonjour,
j'ai un exercice en c, je le fais mais il me reste un petit problème, la moyenne max et la moyenne min, sa marche pas voila ma solution si qlq 1 peut m'aider ça sera bien merci!!
=================================================================
Exercice : écrire un algorithme qui permet de calculer les moyennes de N « élèves », la somme

Des moyennes, la moyenne de la classe, la moyenne min et la moyenne max.

matières coefficient
============================
informatique 4
comptabilité 3
gestion 3
==================================================================

solution
======
Solution :

#include<stdio.h>

#include<conio.h>

main(){

float min1,min2,max1,max2,max,min,mc,moy,s,note1,note2,note3,note,sn;

int n,i;



printf("donner n:");

scanf("%d",&n);

sn=0;

for(i=1;i<=n;i++){

printf("donner la note d'info:");

scanf("%f",¬e1);

printf("donner la note de compta:");

scanf("%f",¬e2);

printf("donner la note de gestion:");

scanf("%f",¬e3);

s=(note1*4)+(note2*3)+(note3*3);

moy=s/10;

note=note1+note2+note3;

sn=sn+note;

mc=note/3;

printf("la moyenne est:%.2f\n",moy);

printf("\n");

if(note1>note2){

max1=note1;

min1=note2;

}

else{

max1=note2;

min1=note1;

}

if(note2>note3){

max2=note2;

min2=note3;

}

else{

max2=note3;

min2=note2;

}

if(max1>max2)

max=max1;

else

max=max2;

if(min1>min2)

min=min2;

else

min=min1;



}

printf("la somme des notes est %.2f\n",sn);

printf("la moyenne de la classe est:%.2f\n",mc);

printf("\n");

printf("la note minimale est: %.2f\n",min);

printf("la note maximale est: %.2f\n",max);

getch();

return 0;

}

15 réponses

ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
16 janv. 2010 à 16:43
Euh, j'ai plus ou moins compris ce que chaque variable veut dire dans ton code, mais tu pourrais Explicitement expliquer chacune des variables comme meme?

Car, a moins que j'ai mal compris ton code, tu demande au debut combien de notes d'eleves il y a => N
apres, tu demande pour chaque eleve les 3 notes => note1 note2 et note3
ensuite tu fais la moyenne des 3 notes de l'eleve => s et moy
puis tu calcules la somme des moyennes => sm
ensuite tu fais la moyenne de la classe => mc (???)
et pour finir tu definis la note minimum et maximum => min et max

C'est bien cela ou me serais je trompe?
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 16:48
RQ: on veut la somme des moyenne, j'ai pas compris pourquoi tu calcule note?

je crois qu'il faut faire :

sn=sn+moy

sn: somme des moyennes

mc:moyenne de la classe tu ecris après la boucle sur n:

mc=sn/n : la moyenne de la classe

pour la moyenne max et min on aura besoin de mmax et mmin

si la moyenne est la max donc mmax=moy

traduction:

tu initialise mmax= 0 et mmin=0 avant la boucle for et tu ajoute dans la boucle for

if (moy>mmax)
{ mmax=moy;
}

if(moy<mmin)
{mmin=moy;
}

j'espère que ça marchera^^

PS: je ne suis pas un informaticien ;)
0
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
16 janv. 2010 à 16:51
note1=informatique note2=comptabilité note3=gestion
note( c'est une variable qui stock la somme des note)
mc(moyenne de la classe) s(somme) moy(moyenne) min et max (le maximum et le minimum des notes qui seront affichés a la fin)........sn(somme des notes) voila!!
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 16:54
t'a compris au moins ma réponse? :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
16 janv. 2010 à 16:57
Un autre probleme dans ton code : la somme des moyennes et la moyenne de la classe se fait apres que tu a donne toutes les notes normalement pas pendant la boucle.
Aussi, est-ce que tu fais la somme par eleve des 3 matieres ou par matiere de tous les eleves?

Si c'est par eleve tu fais la moyenne des 3 matieres en faisant la somme puis divisant par les coefs comme dans ton code, mais si c par matiere tu fais la somme des notes par matiere et tu divise par le nombre d'eleves.
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 17:07
Solution :

#include<stdio.h>

#include<conio.h>

main(){

float mmin,mmax,mc,moy,s,note1,note2,note3,note,sn;

int n,i;



printf("donner n:");

scanf("%d",&n);

sn=0;
mmax=0;

mmin=20;

for(i=1;i<=n;i++)
{

printf("donner la note d'info:");

scanf("%f",¬e1);

printf("donner la note de compta:");

scanf("%f",¬e2);

printf("donner la note de gestion:");

scanf("%f",¬e3);

s=(note1*4)+(note2*3)+(note3*3);

moy=s/10;


sn=sn+moy;


printf("la moyenne est:%.2f\n",moy);

printf("\n");

if(moy>mmax)
{

mmax=moy;

}


if(moy<mmin)

{

mmin=moy;

}



} %fin boucle for

mc=sn/n

printf("la somme des notes est %.2f\n",sn);

printf("la moyenne de la classe est:%.2f\n",mc);

printf("\n");

printf("la moyenne minimale est: %.2f\n",mmin);

printf("la moyenne maximale est: %.2f\n",mmax);

getch();

return 0;

}


PS: le mmin doit etre initialisé en 20 ^^ pas en 0
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 17:10
la moyenne min et max tu la veut par etudian ou bien par matière par etudiant?
0
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
16 janv. 2010 à 17:17
Voyons si on peut nettoyer un peu tout ce meli melo :

#include<stdio.h>
#include<conio.h>

main(){

float max,min,mc,moy,s,note1,note2,note3,note,sm;

int n,i;

printf("donner le nombre d'eleves:");
scanf("%d",&n);

sm=0;
max=0;
min=0;
for(i=1;i<=n;i++){

printf("donner la note d'info:");
scanf("%f",&note1);

printf("donner la note de compta:");
scanf("%f",&note2);

printf("donner la note de gestion:");
scanf("%f",&note3);

s=(note1*4)+(note2*3)+(note3*3);
moy=s/10;
sm=sm+moy;

printf("la moyenne est:%.2f\n",moy);
printf("\n");

if(max<note1){
max=note1;
}
elseif(max<note2){
max=note2;
}
elseif(max<note3){
max=note3;
}

if(min<note1){
min=note1;
}
elseif(min<note2){
min=note2;
}
elseif(min<note3){
min=note3;
}

mc = sm/n;

printf("la somme des moyennes est %.2f\n",sm);

printf("la moyenne de la classe est:%.2f\n",mc);

printf("\n");

printf("la note minimale est: %.2f\n",min);

printf("la note maximale est: %.2f\n",max);

getch();

return 0;

}


Personnelement j'ai vire quelques variables tout a fait inutiles et j'ai change la somme des notes, qui n'est pas demandee, en somme des moyennes.

Aussi, ceci est la methode pour avoir les moyennes par eleve, il faudra changer quelques lignes pour avoir la moyenne par matiere.
0
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
16 janv. 2010 à 17:20
oui ce que je voulais vous dire la note max et min sera afficher : quand l'utilisateur faire entrer ses notes:
par exemple

donner n:3 ca veut dire le nombre de fois que la boucle sera répéter 3 fois
donc==> note1 : 15 note 2: 16 note3: 18
note1:14 note2: 10 note3: 17
note1:13 note2: 8 note3: 7


le resultat qui doit le programme affiche c'est

la somme des moyennes est: 15+14+13+16+10+8+18+17+7=118
la moyenne de la classe: 118/9=13.11

la note maximale est: 18 la note minimale est: 7 voila c'est l'idée général de l'enoncé


merci!!!
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 17:23
ça n'a rien voir avec l'ennoncé xD

il est mal posé
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 17:27
tu es sur que t'a bien compris l'ennocé?

parceque tu confus note avec moyenne !

l'ennocé veut: les moyennes, la somme Des moyennes, la moyenne de la classe, la moyenne min et la moyenne max.


mais toi tu vx:

les moyennes, la somme Des notes, la moyenne des notes de toutes les matières de la classe, la note min et la note max.
0
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
16 janv. 2010 à 17:30
Oula, je crois que tu dois reviser tes maths, la somme des moyennes c'est pas la somme des notes comme tu viens de l'ecrire.
La somme des moyennes serait, dans ton exemple,
sommemoy = (15*4 + 16*3 + 18*3)/10 + (14*4+10*3+17*3)/10 + (13*4+8*3+7*3)/10
et la moyenne de la classe serait
moyclasse = sommemoy/3 (car 3 eleves)

A moins que les maths ont change dans les dernieres 2 ans a l'ecole, je ne pense pas me tromper. Mais voila le probleme resolu : le probleme venais de ta facon de calculer les moyennes :)
0
Majorak Messages postés 224 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 11 avril 2014 40
16 janv. 2010 à 17:34
Tésté et Approuvé par moi meme


#include<stdio.h>

#include<conio.h>

main(){

float mmin,mmax,mc,moy,s,note1,note2,note3,note,sn;

int n,i;



printf("donner n:");

scanf("%d",&n);

sn=0;
mmax=0;

mmin=20;

for(i=1;i<=n;i++)
{

printf("donner la note d'info pour l'etudiant %d:",i);

scanf("%f",¬e1);

printf("donner la note de compta pour l'etudiant %d:",i);

scanf("%f",¬e2);

printf("donner la note de gestion pour l'etudiant %d:",i);

scanf("%f",¬e3);

s=(note1*4)+(note2*3)+(note3*3);

moy=s/10;


sn=sn+moy;


printf("la moyenne est:%.2f\n",moy);

printf("\n");

if(moy>mmax)
{

mmax=moy;

}


if(moy<mmin)

{

mmin=moy;

}



}

mc=sn/n ;

printf("la somme des moyennes est %.2f\n",sn);

printf("la moyenne de la classe est:%.2f\n",mc);

printf("\n");

printf("la moyenne minimale est: %.2f\n",mmin);

printf("la moyenne maximale est: %.2f\n",mmax);

getch();

return 0;

}
0
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
16 janv. 2010 à 17:36
merci pour toussss!!!
0
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
16 janv. 2010 à 17:54
Ow, je dois avouer que je vois ou j'ai fait l'erreur Majorak, ca me desole de voir que j'ai pu ommetre ce detail u_u

Par contre, je pense qu'on peut changer
s=(note1*4)+(note2*3)+(note3*3);
moy=s/10;


en

moy=((note1*4)+(note2*3)+(note3*3))/10
0