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

Résolu
techis Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
ks13 Messages postés 191 Statut Membre -
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",&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;

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;

}
Configuration: Windows XP
Firefox 3.5.7

15 réponses

  1. ks13 Messages postés 191 Statut Membre 23
     
    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
  2. Majorak Messages postés 234 Statut Membre 40
     
    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
  3. techis Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. Majorak Messages postés 234 Statut Membre 40
     
    t'a compris au moins ma réponse? :p
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ks13 Messages postés 191 Statut Membre 23
     
    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
  7. Majorak Messages postés 234 Statut Membre 40
     
    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",&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;

    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
  8. Majorak Messages postés 234 Statut Membre 40
     
    la moyenne min et max tu la veut par etudian ou bien par matière par etudiant?
    0
  9. ks13 Messages postés 191 Statut Membre 23
     
    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
  10. techis Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  11. Majorak Messages postés 234 Statut Membre 40
     
    ça n'a rien voir avec l'ennoncé xD

    il est mal posé
    0
  12. Majorak Messages postés 234 Statut Membre 40
     
    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
  13. ks13 Messages postés 191 Statut Membre 23
     
    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
  14. Majorak Messages postés 234 Statut Membre 40
     
    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",&note1);

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

    scanf("%f",&note2);

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

    scanf("%f",&note3);

    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
  15. techis Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
     
    merci pour toussss!!!
    0
  16. ks13 Messages postés 191 Statut Membre 23
     
    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