Probleme sur instruction en C

Fermé
flight7218 Messages postés 13 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 12 septembre 2011 - 22 mai 2007 à 21:57
flight7218 Messages postés 13 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 12 septembre 2011 - 23 mai 2007 à 00:51
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
22 mai 2007 à 22:27
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 dimanche 13 mai 2007 Statut Membre Dernière intervention 12 septembre 2011
23 mai 2007 à 00:51
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 lundi 21 mai 2007 Statut Membre Dernière intervention 9 septembre 2009 3
22 mai 2007 à 22:28
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
22 mai 2007 à 22:45
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 lundi 21 mai 2007 Statut Membre Dernière intervention 9 septembre 2009 3
22 mai 2007 à 23:08
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