Moyenne pondérer! problème

justine -  
mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je bloque sur un programme( en c) qui demande les notes obtenues dans un cours ( /20), le stocker dans un vecteur. dans un autres vecteurs la pondération du cours, le programme affiche le total de l'étudiant et le pourcentage. en fait je ne vois pas comment faire quelqu'un peut m'aider à le réaliser
merci
A voir également:

3 réponses

mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
Le concept :
- La première étape c'est de demander le nombre N de note pour pouvoir allouer tes deux vecteurs (avec un malloc).
- Ensuite il faut faire une boucle pour demander les N notes et ainsi remplir le vecteur de notes. La boucle adéquate c'est bien entendu la - boucle for (pour).
- Même chose avec les coefficients.
- Enfin il faut parcourir les deux tableaux pour calculer la moyenne arithmétique.

Pour que l'exercice te permette de t'entraîner, plutôt que de te donner directement la réponse je te propose de fonctionner en trois étapes :
1) Décrire le principe du programme (ce que je viens de faire)
2) Ecrire le programme en pseudo code
3) Ecrire le programme en C

Je te propose à présent de faire l'étape (2), je te la corrige ensuite si tu veux, et ensuite on passe de la même façon à l'étape (3).

A toi de jouer, bonne chance ;-)
0
alex
 
bonjour jai le même problème et voici ce que jai fait, on peut m'aider à le corriger?
merci

#include <stdio.h>
#include <stdlib.h>
#define MAX 20

int vnote[MAX],vpond[MAX];
int total, limite,i,j;
float pourcentage;
void main (void)

/* calcule de la moyenne pondérer d'un cours avce pourcentage*/
{

printf("entrez le nombre max de cours a introduire\n");
scanf("%d",&limite);

for(i=0;i<limite;i++)
{
printf("entrez note de cours\n");
scanf("%d",&vnote[i]);
}

/* for(i=0;i<limite;i++)
{
printf("%d",vnote[i]);
} */

printf("\n");

for(j=0;j<limite;j++)
{
printf("entrez la ponderation du cours\n");
scanf("%d",&vpond[j]);

}

if(vnote[i] ==vpond[i])

for(i=0;i<limite;i++)
{
printf("total\n");
total= vnote[i] + vnote[i]++;
printf("%d",total);
printf("\n");
}

else

for(i=0;i<limite;i++)
{ printf("total\n");
total= vnote[i]*vpond[j];
printf("%d",total);
}

printf("\n");
for(i=0;i<limite;i++)
{
printf("pourcentage\n");
pourcentage = (total /100)/total;
printf("%d",pourcentage);
}
}
0
mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
Je ne comprends pas très bien le passage
 total= vnote[i] + vnote[i]++; 

Première étape demander le nombre de notes, sinon tu es obligé d'allouer statiquement tes deux vecteurs (cf <1>). Typiquement ici tu ne peux avoir plus de 20 notes. Le reste est bon dans l'ensemble hormis le passage que je ne comprends pas.

Voici le programme que je vous propose.
#include <stdio.h>
#include <stdlib.h>

int main(){
    unsigned nb_note,i;
    double *vnotes,*vcoeff;

    // Demander le nombre de notes
    printf("Nb notes ? ");
    scanf("%i",&nb_note);

    // Allouer les deux vecteurs
    vnotes = (double *)malloc(nb_note*sizeof(double));
    vcoeff = (double *)malloc(nb_note*sizeof(double));

    // Demander les notes
    printf("Saisissez les notes :\n");
    for(i = 0;i < nb_note; ++i){
        double note;
        do{
            printf("Note (%i/%i) ? ",i+1,nb_note);
            scanf("%lf",&note);
        }while(note > 20 || note < 0);
        vnotes[i] = note;
    }

    // Demander les coeffs
    printf("Saisissez les notes :\n");
    for(i = 0;i < nb_note; ++i){
        double coeff;
        do{
            printf("Coeff (%i/%i) ? ",i+1,nb_note);
            scanf("%lf",&coeff);
        }while(coeff < 0);
        vcoeff[i] = coeff;
    }

    // Calculer la moyenne
    {
        double moyenne = 0;
        double somme_coeff = 0;
        for(i = 0;i < nb_note; ++i){
            moyenne += vcoeff[i]*vnotes[i];
            somme_coeff += vcoeff[i];
        }
        moyenne /= somme_coeff;
        printf("moyenne = %lf\n",moyenne);
    }

    // Libérer les deux vecteurs
    free(vnotes);
    free(vcoeff);
    return 0;
}

A l'exécution :
Nb notes ? 5
Saisissez les notes :
Note (1/5) ? 10
Note (2/5) ? 11.5
Note (3/5) ? 17
Note (4/5) ? 14
Note (5/5) ? 8
Saisissez les notes :
Coeff (1/5) ? 4
Coeff (2/5) ? 1
Coeff (3/5) ? 5
Coeff (4/5) ? 2
Coeff (5/5) ? 3
moyenne = 12.566667

Tu noteras que main retourne un int (code d'exécution 0 = tout va bien).

Bonne chance
0