Problème en C, tableaux

Fermé
jordan04 Messages postés 4 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 27 janvier 2009 - 27 janv. 2009 à 22:14
 loupius - 27 janv. 2009 à 23:22
Bonjour,

voici mon sujet :

écrire en c un programme dont le role est de faire saisir a user les notes de 10 eleves d'une classe dans chacune des 3 matieres , anglais , francais et math.
1)afficher a lécran la moyenne de chaque eleve
2)afficher a lecran la moyenne de toute la classe dans chaque matiere
3) trouver le meilleur eleve dans chaque matieres.

Jai commencé a faire mon programme mais je suis bloqué , il faut utilisé un tableau a deux dimensions
je narrive pas a resoudre le 1)
voici ce que j'ai fais sur DEV C++.

#include <stdio.h>
#include <stdlib.h>

int T[10][3],i,moy,j;

int main(int argc, char *argv[])
{
for(i=0;i<10;i++)
{
printf("Veuillez saisir la note de l'eleve N*%d de Math svp \n",i+1);
scanf("%d",&T[10][1]);
}
for(i=0;i<10;i++)
{
printf("Veuillez saisir la note de l'eleve N*%d de Francais svp\n ",i+1);
scanf("%d",&T[10][2]);
}
for(i=0;i<10;i++)
{
printf("Veuillez saisir la note de l'eleve N*%d d'Anglais svp\n ",i+1);
scanf("%d",&T[10][3]);


}

for(i=0;i<10;i++)
{
for (j=0;j<3;j++)
{
moy=moy+T[i][j]; \\ mon probleme ce trouve surement dans cette ligne \\
}

printf("la moyenne de l'eleve numero %d est %d\n",i+1,moy/3);
}


system("PAUSE");
return 0;
}

Je suis en bts ig1 si qqun pourrait maidé sa serait cool
Merci d'avance !

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
27 janv. 2009 à 23:20
Salut,
Ton erreur se situe au niveau de l'affectation des variables. Tu n'utilises pas les indices des boucles for pour initialiser les différentes cases du tableau.
Evite les variables globales, surtout quand tu en as pas besoin ;).
De plus, en C, les tableaux commencent à 0.

#include <stdio.h>

#define NB_EL 10
#define NB_MAT 3

int main(void) {
   int T[NB_EL][NB_MAT];
   char *matiere[]={"Math","Francais","Anglais"};
   int moy;

   //initialisation des notes
   for(int i=0;i<NB_EL;i++){
       for(int j=0;j<NB_MAT;j++){
           printf("note de %s de l'élève %d : ",matiere[j],i+1);
           scanf("%d",&T[i][j]);
       }
    }

   getchar(); //mieux que system("PAUSE"); ;)
   return 0;
}

Pour le calcul des moyennes, ta méthode est presque bonne. Tu as juste oublié de réinitialiser ta variable moy à 0.
Tu le fais juste avant de passer au calcul de la moyenne d'un autre élève.
Cdlt
0
Non, non, l'erreur ne se trouve pas que dans cette ligne:
moy=moy+T[i][j]; \\ mon probleme ce trouve surement dans cette ligne \\ 
J'aurais plutôt mis:
somme = somme + T[i][j]
et je n'aurais pas oublié d'initialiser somme à 0 pour chaque élève.
On peut trouver aussi:
scanf("%d",&T[10][1]);
scanf("%d",&T[10][2]);
scanf("%d",&T[10][3]);
car le premier indice est guidé par i et le second ne peut aller que de 0 à 2 (soit 3 valeurs).
Il y en a peut-être d'autres, mais essayes déjà avec ces corrections.
Bon courage.
0