Bonsoir je bugue sur cet exercice, il m'affiche 0 a chaque fois alors qu'il devrait m'afficher 6 (ne pas prendre en compte le int au lieu du double)
voici le code
#include <stdlib.h>
int somme(int *t, int x)
{
int s,i,m;
for(i=0;i<x;i++)
{
s+=t[i];
}
m=s/x;
return m ;
}
int main()
{
int t[6]={6,5,7,9,6,9},i,m;
somme(t,6);
printf("%d",m);
return 0;
}
Les variables s et m des fonctions somme et main sont des variables locales. Chacune n'est visible que depuis sa déclaration jusqu'à la fin du bloc (délimité par {}) qui la contient. Donc l'affichage de m ligne 17 affiche la valeur d'une variable non initialisée, qui peut valoir n'importe quoi.
Dans ta fonction, tu fais bien un return m. Mais dans le main(), le retour de la fonction n'est assigné à aucune variable. À retenir que le m dans somme() est un variable locale à la fonction, tout comme l'est m dans le main(). Ces deux m n'ont rien à voir l'un avec l'autre.
Fais un petit retour en arrière dans le tutoriel pour comprendre que (dans le main()) m=somme(....) est nécessaire.
Edit: comme les carabiniers d'Offenbach
- Edité par edgarjacobs 2 décembre 2018 à 19:19:50
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
#include<stdio.h> doublemoyennetableau(int*tableau,int taille); /*Créez une fonction moyenneTableau qui calcule et renvoie la moyenne des valeurs. Prototype :�*/ intmain() { int tb[4]={10,5}; printf("la moyenne des valeurs de notre tableau est%d",moyennetableau(tb,4)); return0; }
doublemoyennetableau(int*tableau,int taille) { int som=0,i; for(i=0;i<taille;i++) { som+=tableau[i]; }
1) Utilise le bouton code </> pour poster ton code.
2) Crée un nouveau sujet, au lieu de venir polluer celui des autres.
3) Tu essais d'afficher un double avec le spécificateur de format %d
4) Remarque : ta fonction moyennetableau travail sur des entiers et retourne un double.
Exercice de moyenne tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent