Calculer moyenne
Résolu
anthony
-
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
voici un code qui devrait calculer la moyenne mais il m'indique une erreur de compatibilité:
je ne comprends pas l'erreur
voici un code qui devrait calculer la moyenne mais il m'indique une erreur de compatibilité:
#include <stdio.h> #define NOTE 3 float moyenne(float tableau[NOTE]); int main() { float tableau[NOTE]; int i; puts("Entrez vos tros notes pour calculer votre moyenne"); for(i = 0; i < NOTE; i++) scanf("%f", &tableau[i]); printf("la moyenne est de %f\n", moyenne(tableau[NOTE])); return 0; } float moyenne(float tableau[NOTE]) { float resultat, addition = 0; int i; for(i = 0; i < NOTE; i++) addition += tableau[i]; resultat = addition / NOTE; return resultat; }
C:\Users\Anthony\Documents\test\main.c||In function `main':| C:\Users\Anthony\Documents\test\main.c|13|error: incompatible type for argument 1 of `moyenne'| ||=== Build finished: 1 errors, 0 warnings ===|
je ne comprends pas l'erreur
A voir également:
- Calculer moyenne
- Comment calculer la moyenne sur excel - Guide
- Moyenne en anglais excel - Guide
- Comment calculer un total sur excel - Guide
- Moyenne de pourcentage excel ✓ - Forum Excel
- Comment calculer une note sur 20 ✓ - Forum Bureautique
12 réponses
printf("la moyenne est de %f\n", moyenne(tableau[NOTE]));
=> printf("la moyenne est de %f\n", moyenne(tableau[]));
voir meme => printf("la moyenne est de %f\n", moyenne(tableau));
float moyenne(float tableau[NOTE])
=> float moyenne(float tableau[])
et moi je préfèrerai
=> float moyenne(float *tableau)
en C, une fois que t'as déclaré la taille du tableau à la création, lui il se moque bien de la taille...
=> printf("la moyenne est de %f\n", moyenne(tableau[]));
voir meme => printf("la moyenne est de %f\n", moyenne(tableau));
float moyenne(float tableau[NOTE])
=> float moyenne(float tableau[])
et moi je préfèrerai
=> float moyenne(float *tableau)
en C, une fois que t'as déclaré la taille du tableau à la création, lui il se moque bien de la taille...
ah ok donc en gros un fois déclarer je n'ai plus besoin de mettre la taille ?
et pour ton code sa ne marche pas:
et pour ton code sa ne marche pas:
printf("la moyenne est de %.2f\n", moyenne(tableau[]));
C:\Users\Anthony\Documents\test\main.c||In function `main':| C:\Users\Anthony\Documents\test\main.c|13|error: syntax error before ']' token| ||=== Build finished: 1 errors, 0 warnings ===|
ah oui sa marche mais quand tu dit que en C quand on déclarer la taille d'un tableau lui il se moque bien de la taille donc en gros plus besoin de redire la taille du tableau donc si je met sa sa devrais marcher:
biensur je modifie le prototype et ben pourtant non sa ne marche pas sa me met un message d'erreur :
float moyenne(float tableau)
biensur je modifie le prototype et ben pourtant non sa ne marche pas sa me met un message d'erreur :
C:\Users\Anthony\Documents\test\main.c||In function `main':| C:\Users\Anthony\Documents\test\main.c|13|error: incompatible type for argument 1 of `moyenne'| C:\Users\Anthony\Documents\test\main.c||In function `moyenne':| C:\Users\Anthony\Documents\test\main.c|24|error: subscripted value is neither array nor pointer| ||=== Build finished: 2 errors, 0 warnings ===|
Perso je pense aussi qu'il faut un moyenne(tableau)
Et puis il y a une faute de frappe tout au début :
"puts("Entrez vos tros notes pour calculer votre moyenne");"
tu devrais mettre
puts("Entrez vos trois notes pour calculer votre moyenne");
Désolé sa me perturbais :)
Et puis il y a une faute de frappe tout au début :
"puts("Entrez vos tros notes pour calculer votre moyenne");"
tu devrais mettre
puts("Entrez vos trois notes pour calculer votre moyenne");
Désolé sa me perturbais :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
un tableau c'est un pointeur (de type float*). Donc, tu passes la taille lors de la création, mais sinon, lors des passsage d'une fonction à l'autre, c'est toujours un type float*
par contre, une fois dans ta fonction, rien ne t'empèche d'utiliser la notation "classique" du tableau tableau[1], etc...
par contre, une fois dans ta fonction, rien ne t'empèche d'utiliser la notation "classique" du tableau tableau[1], etc...
Pourquoi ne pas essayer ceci, car je ne comprends pas pourquoi ton float est avant le main() !
Et puis tu a oublier les accolades dans ta boucle for
#include <stdio.h>
#define NOTE 3
int main()
{
float moyenne(float tableau[NOTE]);
float tableau[NOTE];
int i;
for(i = 0; i < NOTE; i++)
{
puts("Entrez une note ");
scanf("%f", &tableau[i]);
}
moyenne = tableau [0] + tableau [1] + tableau [2] / 3;
printf("la moyenne est de %.2f\n", moyenne);
return 0;
}
lol Nabla's merci pour la correction !
Et puis tu a oublier les accolades dans ta boucle for
#include <stdio.h>
#define NOTE 3
int main()
{
float moyenne(float tableau[NOTE]);
float tableau[NOTE];
int i;
for(i = 0; i < NOTE; i++)
{
puts("Entrez une note ");
scanf("%f", &tableau[i]);
}
moyenne = tableau [0] + tableau [1] + tableau [2] / 3;
printf("la moyenne est de %.2f\n", moyenne);
return 0;
}
lol Nabla's merci pour la correction !
prend l'habitude de faire un printf pour voir la valeur de tes variables (pour les dépassement de capacité ou une valeur null alors qu'elle ne devrai pas l'être
Oui ba c'est ba là que je ne comprends pas pourquoi ceci est en dehors du main...
float moyenne(float tableau[NOTE]);
Je ne suis pas super calé en C mais on doit définir les float dans le main non ??
oui j'ai oublier un "float moyenne;" en dessous du "int i;"
float moyenne(float tableau[NOTE]);
Je ne suis pas super calé en C mais on doit définir les float dans le main non ??
oui j'ai oublier un "float moyenne;" en dessous du "int i;"
Prend l'habitude de faire un printf pour voir la valeur de tes variables (pour les dépassement de capacité ou une valeur null alors qu'elle ne devrai pas l'être
garion c'est ce que je fais j'utilise puts() quand on a pas besoin d'utiliser les variable et printf() quand je veux utiliser une variable.
float moyenne(float tableau[NOTE]);est un prototype il doit être placer au début et il signifie que la fonction moyenne est placer en dehors de la fonction principale main()
pourquoi tu ne défini pas tout simplement
float tableau[3];
float moyenne;
Si tu sais par avance qu'il y aura 3 notes !???
float tableau[3];
float moyenne;
Si tu sais par avance qu'il y aura 3 notes !???
ben si, ca dis que la variable tableau sera un tableau de type float (faut attendre que nabla soit là pour des explications)
je repasserai plus tard expliquer, j'ai du boulot.
mais en gros, essayes ca (ca plante, c'est normal)
int note= 3;
float tableau[note];
là il gueule parce que ton tableau n'est pas créé à l'execution, mais bien à la compilation, et donc t'as pas le droit de faire passer sa taille par une variable. Mais le principe est corect.
alors que si tu fais
int note= 3;
float *tableau= new float[note];
ca fait ce que tu voulais faire au dessus, mais le tableau est créé à l'execution. Donc tu peux demander combien de notes la personne veut saisir, stocker ca dans note, et ensuite executer ton code.
mais en gros, essayes ca (ca plante, c'est normal)
int note= 3;
float tableau[note];
là il gueule parce que ton tableau n'est pas créé à l'execution, mais bien à la compilation, et donc t'as pas le droit de faire passer sa taille par une variable. Mais le principe est corect.
alors que si tu fais
int note= 3;
float *tableau= new float[note];
ca fait ce que tu voulais faire au dessus, mais le tableau est créé à l'execution. Donc tu peux demander combien de notes la personne veut saisir, stocker ca dans note, et ensuite executer ton code.
par contre, il faut que tu trouves un moyen pour que chaque fonction connaisse la taille maximum (pour pas sortir du tableau, ce qui arrive souvent en C).
dans ton cas, c'est la variable pré processée "NOTE " qui evite le débordement. (ce qui indique que tu en es à tes premiers essais avec les tableaux ) ;)