Appels de fonctions et tableaux
Fermé
arnaudtchana
Messages postés
6
Date d'inscription
lundi 15 juillet 2013
Statut
Membre
Dernière intervention
21 juillet 2014
-
18 juil. 2013 à 14:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 18 juil. 2013 à 21:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 18 juil. 2013 à 21:07
A voir également:
- Appels de fonctions et tableaux
- Fonction si et - Guide
- Tableaux croisés dynamiques - Guide
- Fusionner deux tableaux excel - Guide
- Appels masqués - Guide
- Le fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? ✓ - Forum Windows 10
3 réponses
BadGamer
Messages postés
517
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
18 juil. 2013 à 14:14
18 juil. 2013 à 14:14
Bon alors j'ai une solution pour toi mais le calcul ne marche pas...je te la donne quand même:
Créer une variable K de type double et dans ton scanf fait :
Le fflush(stdin); vide ton buffer j'ai eut énormement de problemes avec
Créer une variable K de type double et dans ton scanf fait :
printf("veillez entrer la valeur %d de votre tableau \t",j+1); fflush(stdin); scanf("%d",&k); tab[j]=k;
Le fflush(stdin); vide ton buffer j'ai eut énormement de problemes avec
BadGamer
Messages postés
517
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
25 décembre 2014
132
18 juil. 2013 à 14:53
18 juil. 2013 à 14:53
#include <stdio.h> #include <stdlib.h> #include <math.h> float moyenneT(int *tab); int main() { int k=0; int tab[5]; int j=0; float moyenne; for(j=0;j<5;j++) { printf("veillez entrer la valeur %d de votre tableau \t",j+1); fflush(stdin); scanf("%d",&k); tab[j]=k; } moyenne=moyenneT(tab); printf("la moyenne des elements de votre tableau est %f",moyenne); } float moyenneT(int *tab) { float moyenne=0; int i=0; int somme=0; for (i=0;i<5;i++) { somme=somme+tab[i]; } moyenne=somme/5; return moyenne; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
18 juil. 2013 à 21:07
18 juil. 2013 à 21:07
Bonjour,
@arnaudtchana,
printf("veillez entrer la valeur %ld de votre tableau",j+1);
j est de type int. Il faut donc mettre : printf("...%d...",j+1); (et non "%ld").
scanf("%d",tab[j]);
Deux erreurs :
1. tab[j] est de type double alors que tu demandes à scanf la saisie d'un int. Il faut que ça soit cohérent.
2. Il faut mettre l'adresse de la variable, pas la variable elle-même.
Ce qui donne : scanf("%lf",&tab[j]); ou scanf("%lf",tab+j);
Si tu veux garder "%d", alors il faudra mettre : int tab[5];
double calculmoyennetab(long tableau[],long tailletableau)
Attention, tu dis que tableau est un tableau de long ici alors qu'ailleurs tu as mis que c'était un tableau de double. Il faut que tout soit cohérent.
printf("la moyenne des elements de votre tableau est %d",moyenne);
moyenne est de type double. Il faut donc mettre : printf("...%f...", moyenne) (et non "%d").
De plus, je te conseille de mettre \n ou alors il faudra mettre fflush(stdout);
Et enfin, n'oublie pas le return 0; final.
@BadGamer,
fflush(stdin) => A ne pas utiliser : comportement indéfini.
De plus, le flush clavier doit se réaliser après une fonction de lecture (si un '\n' est encore dans le buffer) et non avant comme tu as mis.
Ici, ce n'est pas vraiment obligatoire puisqu'il ne lit que des entiers. Donc, ne compliquons pas la chose :-).
Sinon pour info, la purge clavier se fait comme ceci :
Cdlt,
@arnaudtchana,
printf("veillez entrer la valeur %ld de votre tableau",j+1);
j est de type int. Il faut donc mettre : printf("...%d...",j+1); (et non "%ld").
scanf("%d",tab[j]);
Deux erreurs :
1. tab[j] est de type double alors que tu demandes à scanf la saisie d'un int. Il faut que ça soit cohérent.
2. Il faut mettre l'adresse de la variable, pas la variable elle-même.
Ce qui donne : scanf("%lf",&tab[j]); ou scanf("%lf",tab+j);
Si tu veux garder "%d", alors il faudra mettre : int tab[5];
double calculmoyennetab(long tableau[],long tailletableau)
Attention, tu dis que tableau est un tableau de long ici alors qu'ailleurs tu as mis que c'était un tableau de double. Il faut que tout soit cohérent.
printf("la moyenne des elements de votre tableau est %d",moyenne);
moyenne est de type double. Il faut donc mettre : printf("...%f...", moyenne) (et non "%d").
De plus, je te conseille de mettre \n ou alors il faudra mettre fflush(stdout);
Et enfin, n'oublie pas le return 0; final.
@BadGamer,
fflush(stdin) => A ne pas utiliser : comportement indéfini.
De plus, le flush clavier doit se réaliser après une fonction de lecture (si un '\n' est encore dans le buffer) et non avant comme tu as mis.
Ici, ce n'est pas vraiment obligatoire puisqu'il ne lit que des entiers. Donc, ne compliquons pas la chose :-).
Sinon pour info, la purge clavier se fait comme ceci :
{ int c; while( (c=getchar()) != '\n' && c != EOF ); }
Cdlt,
18 juil. 2013 à 14:44
Modifié par BadGamer le 18/07/2013 à 15:08
Si il y a des passage que tu ne comprend pas n'hésite pas a demander, par contre le flush dit toi de toujours mettre ça avant un scanf ça t'evitera des problemes
18 juil. 2013 à 15:17
Modifié par BadGamer le 18/07/2013 à 15:51
http://s15.postimg.org/tvfjq5vuj/Capture.png