Probleme sur instruction en C

flight7218 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
flight7218 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
bonsoir,

j'ai un petit souci au niveau d'un resultat de calcul d'une moyenne d'une serie de nombres par le programme suivant ;
int N=0;
int tab[N];
int i=0;
int tot=0;

printf("donner le nombre de notes prendre en compte :");
scanf("%ld",&N);
for(i=0;i<=N;i++)
{
printf(" donnez la valeur de la note %ld:",i);
scanf("%ld",&tab[i]);
tot=tot+tab[i];
}

printf("Somme des elements du tableau est : %ld\n",tot);


printf("la moyenne des elements: %ld",tot/N);

le probleme se situe à la dernière instruction ou le resulat renvoyé est un nombre entier , comment serait il possible de faire pour renvoyer un nombre decimal en resultat pour la moyenne sachant que je dois diviser un nombre entier par un nombre entier et que le resultat ne doit pas toujours etre rond?
Merci à vous

3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
C'est normal. Tu fais un tableau de 0 colonne.
Version corrigée :

#define MAX 128

int N;
int tab[MAX];
int i;
int tot=0;

printf("donner le nombre de notes prendre en compte :");
scanf("%ld",&N);
for(i=0;i<=N;i++)
{
printf(" donnez la valeur de la note %d:",i);
scanf("%d",&tab[i]);
tot+=tab[i];
}

printf("Somme des elements du tableau est : %d\n",tot);


printf("la moyenne des elements: %d",tot/N);
0
flight7218 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
bonsoir , je te remercie pour ton intervention , mais le probleme n'est pas resolu , car en compilant ta proposition de programme
je me retrouve par exemple avec une solution entière pour le calcul de la moyenne lorsque N=3
et que par exemple je choisi tab[0]=1, tab[1]=2,tab[2]=3 et tab[3]=5 en effet le programme me donne bien la somme et tot=11
par contre il me retourne pour moyenne : 9 , et le resultat devrait etre un nombre decimal .

merci encor
0
oliver91 Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   3
 
D'apres moi, qui ne suis pas un pro (loin de là vu toute l'aide que je demande sur ce forum ...), il s'agit de ton tableau qui merde.

Tu réserve un espace mémoire de 0 éléments pour ton tableau ...

or par la suite, tu rempli les éléments de ton tableau (que tu n'as pas alloué en mémoire!).

Il te faut faire un tableau dynamique ou bien tricher un peu en déclarant ton tableau apres le scanf qui te donne le nombre de notes de ton tableau (= nbr de cellule de tab).

En espérant t'avoir aider.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
La triche ne marche pas. Si tu penses effectuer un
scanf("%d",&nb);
int tab[nb];

Ca ne marchera pas. Le compilateur ne connaitra pas nb au moment de la compilation. Donc soit le tableau dynamique comme tu as dit. Soit comme j'ai mis plus haut, un grand tableau.
0
oliver91 Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   3
 
ok. merci fiddy.

Tu as l'air de maitriser le C ... penses tu pouvoir m'aider ?

Mon probleme est sur le forum : [C] Init d1 Tableau dynamique en parametre...

Si tu peux, merci de m'aider ;)
0