Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème de tableau

    16 juin 2006 à 22:35:41

    Bonjour, j'ai essayé le premier exercisse du tuto sur les tableaus. C'est à dire faire une fonction qui additione toutes les variables d'un tableau. Malheureusement je n'ai pas réussi :( . Quelqu'un à une solution? Voici mon essaie.

    </code>
    #include <stdio.h>
    #include <stdlib.h>

    long addition(long tableau[], long tailleTableau);


    int main(int argc, char *argv[])
    {
     long tableau[6] = {10, 22, 55, 33, 66, 67};
     
     long resultat1 = 0;
     
     resultat1 = addition(&tableau , 6);
     
     printf("%ld\n" , resultat1);
       
       
       
       
       
       system("PAUSE");     
      return 0;
    }

    long addition(long tableau[], long tailleTableau)   
    {

    long resultat = 0, i = 0, ii = 0

    for (i < tailleTableau && ii < tailleTableau; i++; ii++)
    {
    resultat = (tableau[i++] + tableau[ii++]) / 2;   
    }

    return resultat;
    } 
    <code type="c">










    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2006 à 22:41:14

      Je ne comprend pas trop ta logique

      1. Pourquoi passes tu l'adresse de ton tableau à ta fonction.
      2. Pourquoi as tu besoin de deux variables i et ii dans ta fonction
      3. Je comprends pas trés bien le calcul.

      Je ne vais pas te dire la solution, mais t'aider à la trouver du moins essayer.
      Ce qu'il faut faire cest de declarer une variable temporaire (resultat comme tu l'as fais) et ensuite parcourir chaque element du tableau pour l'ajouter a resultat
      resultat += elementdutableau;

      Bon je te mets une solution que je ne teste pas en secret

      Secret (cliquez pour afficher)


      long addition(long tableau[], size_t taille)
      {
      int i, resultat = 0;
      for (i = 0; i < taille; i++)
      {
          resultat += tableau[i];
      }
      return resultat;
      }

      int main(void)
      {
          long tableau[5] = {1,2,3,4};
          printf("Resultat %ld",addition(tableau,5));
          fflush(stdout);
          getchar();
          return 0;
      }

      • Partager sur Facebook
      • Partager sur Twitter
        16 juin 2006 à 22:45:37

        long addition(long tableau[], long tailleTableau) 
        long tableau[6] = {10, 22, 55, 33, 66, 67};

        Premièrement, c'est un char pour un tableau.
        resultat1 = addition(&tableau , 6);

        Si tu met un char a tableau, t'auras pas a mettre le & .
        Et dernièrement, le code qui fonctionne c'est ça :
        #include <stdio.h>
        #include <stdlib.h>

        long addition(char tableau[], long tailleTableau);


        int main(int argc, char *argv[])
        {
         char tableau[6] = {10, 22, 55, 33, 66, 67};
         
         long resultat1 = 0;
         
         resultat1 = addition(tableau[6] , 6);
         
         printf("%ld\n" , resultat1);
           
           
           
           
           
           system("PAUSE");     
          return 0;
        }

        long addition(char tableau[], long tailleTableau)   
        {

        long resultat = 0, i = 0

        for (i = 0; i < tailleTableau ; i++)
        {
        resultat += tableau[i];   
        }

        return resultat;
        } 

        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2006 à 22:47:53

          Citation : oussama1305


          Premièrement, c'est un char pour un tableau.



          kekidit lui ? Pourquoi ca serait specialement un char. A ne pas melanger la notion de chaine de caractères (qui est un tableau de char) et la notion de tableau tout court
          • Partager sur Facebook
          • Partager sur Twitter
            16 juin 2006 à 22:50:35

            Ah ! j'ai confondu un peu tout ^^ .
            • Partager sur Facebook
            • Partager sur Twitter
              16 juin 2006 à 23:10:58

              Avec des char ca marche étant donné que les valeurs qu'il utilise qui rentrent parfaitement dans un char... mais bon, mieu vaut ne pas tout mélanger.

              Sinon cette ligne est fausse :


              resultat1 = addition(tableau[6] , 6);


              En effet, tableau[6] n'est pas un tableau mais un élément du tableau, et qui n'éxiste meme pas qui plus est étant donné que ton tableau ne va jusqu'à 5... Voila la version correcte.


              resultat1 = addition(tableau, 6);


              Essaie de compiler avant de certifier un code comme valide, je doute qu'une erreur de segmentation soit signe d'un code tres correct. =)
              • Partager sur Facebook
              • Partager sur Twitter
                16 juin 2006 à 23:20:51

                Pourquoi (+=)? ce n'est pas (==) habituellement? Et pourquoi je ne dois pas mettre un & devant mon tableau quand je le rentre dans la fonction? C'est un pointeur non? :euh:
                • Partager sur Facebook
                • Partager sur Twitter
                  16 juin 2006 à 23:47:05

                  Oulalalala !! :p A mon avis laisse tombé et relis TOUTS les cours de M@teo. Rapidemment bien sur mais t'as reellement besoin de te remettre en tete certaines bases essentielles.
                  Donc alors je vais quand meme repondre a ta question :
                  == sert a comparer des variables
                  et += a eviter les repitions de termes ex : resultat = resultat + variable est la meme chose que resultat += variable (ca marche avec d'autres signes) .
                  Ah oui et mettre le & devant le pointeur pour l'envoyer a une fonction la tu envoies l'adresse du pointeur et ca comme le dit si bien M@teo ^^ "On s'en fou completement !".Donc tu mets juste pointeur ainsi tu envoies bien l'adresse sur laquelle pointe ton pointeur. Mais c'est inutile de tout te reexpliquer car apparemment t'as rien compris donc relecture oblige ;) .

                  EDIT : J'oubliais ca a l'air de coincer avec les fonctions aussi :lol: .

                  Citation : blackice

                  resultat1 = addition(&tableau , 6);



                  Un peu beaucoup inutile d'enregistrer le resultat de ta fonction dans une variable alors qu'elle la retourne deja. Fais comme tebonb

                  Citation : tebonb

                  printf("Resultat %ld",addition(tableau,5));

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 juin 2006 à 0:25:58

                    Bien c'est asser bizarre car en haut si tu vois mon premier code source j'ai bien mit le & avant le tableau, car tableau est un pointeur. Mais ont ma dit de l'enlever :colere2: . Et pourtant je me rapelle avoir vue += mais seulement pour faire une incrémendation. ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 juin 2006 à 0:30:33

                      Tu t'embrouilles tu t'embrouilles. Reprend le cours, tu perdra beaucoup moins de temps :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 juin 2006 à 0:39:37

                        Je l'est modifier mais pourtant sa m'affiche juste zero. :euh: Et en passant sa va faire deux fois que je relie le chapitre sur les boucles et les fonctions. C'est peut etre pas pour moi la programmation o_O


                        </code>#include <stdio.h>
                        #include <stdlib.h>

                        long addition(long tableau[], long tailleTableau);


                        int main(int argc, char *argv[])
                        {
                         long tableau[6] = {10, 22, 55, 33, 66, 67};
                         
                         long resultat1 = 0;
                         
                         resultat1 = addition(&tableau , 6);
                         
                         printf("%ld\n" , resultat1);
                           
                           
                           
                           
                           
                           system("PAUSE");     
                          return 0;
                        }

                        long addition(long tableau[], long tailleTableau)   
                        {

                        long resultat = 0, i = 0

                        for (i < tailleTableau ; i++;)
                        {
                        resultat += tableau[i];   
                        }

                        return resultat;
                        } 
                        <code type="c">
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 juin 2006 à 0:43:47

                          T'abuse ca fait 20 fois qu'on te dit qu'il faut pas mettre le & quand tu passes un tableau...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 juin 2006 à 1:07:01

                            Desolé je me suis mal exprimé autant pour moi. Ce que je voulais dire c'etait justement qu'il fallait pas mettre de & car ca envoyait l'adresse du tableau et ca bha c'est nul ^^ .
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 juin 2006 à 1:40:38

                              ahhhh confusion :o Mais quessequi cloche dans le programme si j'enlève le &?. Il me renvoit 0. pourquoi?


                              </code>
                              #include <stdio.h>
                              #include <stdlib.h>

                              long addition(long tableau[], long tailleTableau);


                              int main(int argc, char *argv[])
                              {
                               long tableau[6] = {10, 22, 55, 33, 66, 67};
                               
                               long resultat1 = 0;
                               
                               resultat1 = addition(tableau , 6);
                               
                               printf("%ld\n" , resultat1);
                                 
                                 
                                 
                                 
                                 
                                 system("PAUSE");     
                                return 0;
                              }

                              long addition(long tableau[], long tailleTableau)   
                              {

                              long resultat = 0, i = 0

                              for (i < tailleTableau ; i++;)
                              {
                              resultat += tableau[i];   
                              }

                              return resultat;
                              } 
                               <code type="c">
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 juin 2006 à 8:32:45

                                Citation : lexou

                                Avec des char ca marche étant donné que les valeurs qu'il utilise qui rentrent parfaitement dans un char... mais bon, mieu vaut ne pas tout mélanger.



                                Wep en effet, mais si par défault les char son signed et qu'il décide de mettre une valeur comme 200, ca devrait planter.

                                Sinon, blakice, bizarre que ton code compile, ton erreur se situe au niveau de ta boucle, deja la syntaxe n'est pas respectée, on ne met pas de ; aprés l'incrémentation de la variable. Tu peux faire


                                for (; i < tailleTableau; i++)


                                ou


                                for (i; i < tailleTableau; i++)
                                • Partager sur Facebook
                                • Partager sur Twitter

                                problème de 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