Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice de moyenne tableau

    2 décembre 2018 à 19:11:02

    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;
    }
    
    

    Merci d'avance pour votre aide



    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2018 à 19:18:04

      Bonjour,

      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.

      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2018 à 19:18:18

        Hello,

        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

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          2 décembre 2018 à 19:28:11

          Top merci beaucoup pour votre aide a++
          • Partager sur Facebook
          • Partager sur Twitter
            3 décembre 2018 à 13:51:07

            Un bug énorme : la  fonction qui calcule la moyenne devrait s'appeler moyenne, et pas somme.

            Par ailleurs elle devrait appeler la fonction somme qui a été écrite dans l'exercice précédent de ce cours merdique, au lieu de refaire son boulot.

            -
            Edité par michelbillaud 3 décembre 2018 à 13:51:57

            • Partager sur Facebook
            • Partager sur Twitter
              13 décembre 2018 à 9:58:33

              #include<stdio.h>
              #include<stdlib.h>
              double sommeTableau(double  tableau[], double  tailleTableau);
              double main()
              {
                  double tableau [4]= {5,4,10,9};
                  printf("la moyenne du tableau est %f\n", sommeTableau(tableau, 4));
                  return 0;
              }
               
               
              double sommeTableau(double  tableau[], double tailleTableau)
              {
                  int i=0, resultat=0;
                  double moyenne=0;
                  for(i=0; i<tailleTableau; i++)
                  {
                      resultat += tableau[i];
                      moyenne = resultat/tailleTableau;
                  }
                  return moyenne;


              }
              • Partager sur Facebook
              • Partager sur Twitter
                13 décembre 2018 à 10:12:42

                Plusieurs erreurs

                • la fonction qui calcule la moyenne s'appelle somme.
                • la taille devrait être un entier
                • la variable resultat ne contient pas le résultat, mais la somme
                • la division se fait une fois qu'on a la somme, donc après la boucle.

                Une remarque :

                • quand on poste dans un forum, ça serait pas idiot de lire ce qui a déjà été écrit.

                -
                Edité par michelbillaud 13 décembre 2018 à 10:13:35

                • Partager sur Facebook
                • Partager sur Twitter
                  1 janvier 2019 à 8:17:08

                  Salut

                  Quand j'execute sa me donne un nombre énorme 

                  Comme une  adresse

                  #include <stdio.h>
                  double moyennetableau(int *tableau,int taille);
                  /*Créez une fonction moyenneTableau qui calcule et renvoie la moyenne des valeurs. Prototype :�*/
                  int main()
                  {
                    int tb[4]={10,5};
                    printf("la moyenne des valeurs de notre tableau est%d",moyennetableau(tb,4));
                    return 0;
                  }

                  double moyennetableau(int *tableau,int taille)
                  {
                    int som=0,i;
                    for (i=0;i<taille;i++)
                    {
                      som+=tableau[i];
                    }
                   
                    return som/taille;
                  }

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 janvier 2019 à 11:36:06

                    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.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    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.
                    • Editeur
                    • Markdown