Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme

tableau, fonction et pointeurs ...

Sujet résolu
    7 octobre 2007 à 16:10:27

    Bonjour, voilà, j'ai essayé le premier exercice que M@teo nous donne :
    Faire une somme des valeurs des 4 tableaux dans une fonction sommeTableau :

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. long sommeTableau(long tableau[4], long tailleTableau);//prototype de la fonction sommeTableau
    4. int main(int argc, char *argv[])//fonction main
    5. {
    6.     long tableau[4];
    7.     tableau[0] = 10;
    8.     tableau[1] = 23;
    9.     tableau[2] = 505;
    10.     tableau[3] = 8;
    11. sommeTableau(somme)
    12. printf("%ld\n", somme);    
    13. system("PAUSE");
    14.     return 0;
    15. }
    16. long sommeTableau(long tableau[4], long tailleTableau)// fonction sommeTableau
    17. {
    18.      long somme;
    19.      long somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
    20.      }


    Je sais qu'il me manque une ligne, dans la fonction main, celle qui permet dy intégrer la fonction sommeTableau, mais je sais pas tout comment my prendre, merci de m'aider sans me donner la solution,

    merci d'avance ...
    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2007 à 16:25:32

      Dans ta fonction sommeTableau() (comme partout ailleurs), tu ne dois pas redéclarer des variables. Le fait de déclarer long somme; et ensuite long somme = ...; la redéfini. Pour éviter ça il suffit d'enlever ton 2ème long pour obtenir quelque chose comme :

      long somme;
      somme = ...;


      Le prototype de ta fonction dit qu'elle doit retourner un long. Donc tu dois mettre un return `variable de type long`; à la fin de ta fonction.

      Tu dois récupérer ce qui est retourné par cette fonction dans le main() avec quelque chose du genre :
      long a;
      a = fonction();

      Après tu pourra manipuler le retour de ta fonction à ta guise (pour un printf() en l'occurence) grâce à cette variable qui stocke le retour de ta fonction.
      • Partager sur Facebook
      • Partager sur Twitter
        7 octobre 2007 à 16:52:49

        merci beaucoup je vais tester,

        EDIT : Il me reste 2 erreurs apperment :

        1. #include <stdio.h>
        2. #include <stdlib.h>
        3. long sommeTableau(long tableau[4], long tailleTableau);
        4. int main(int argc, char *argv[])
        5. {
        6.     long tableau[4];
        7.     tableau[0] = 10;
        8.     tableau[1] = 23;
        9.     tableau[2] = 505;
        10.     tableau[3] = 8;
        11. long a;
        12. a = fonction(sommeTableau);
        13. printf("%ld\n", a);    
        14. system("PAUSE");
        15.     return 0;
        16. }
        17. long sommeTableau(long tableau[4], long tailleTableau)
        18. {
        19.      long somme;
        20.      somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
        21.      return somme;
        22. }

        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2007 à 18:02:32

          Ta fonction elle s'appelle pas "fonction"... J'ai pris un exmeple général... Pareil pour la variable que j'ai appelé 'a'.

          Et il faut déclarer ses variables en début de fonction. Donc ton long a; il faut le mettre avant tes tab[0] = ...; tab[1] = ...; etc...

          Après ça devrait marcher.
          • Partager sur Facebook
          • Partager sur Twitter
            7 octobre 2007 à 18:28:09

            Oulalala pas jolie tout ça :/

            1. long tableau[4];
            2.     tableau[0] = 10;
            3.     tableau[1] = 23;
            4.     tableau[2] = 505;
            5.     tableau[3] = 8;


            Soyons fun, pratique et intelligent:
            1. long tableau[4] = {10, 23, 505, 8};



            1. long a;
            2. a = fonction(sommeTableau);
            3. printf("%ld\n", a);


            Soyons fun, pratique et intelligent et corrigeons les fautes:
            1. printf("%ld",sommeTableau(tableau, 4));

            Tu as un tableau nommé tableau et une fonction nommé sommeTableau et pas fonction. Tu n'as pas du tout compris le chapitre des fonctions: go !


            1. long sommeTableau(long tableau[4], long tailleTableau)
            2. {
            3.      long somme;
            4.      somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
            5.      return somme;
            6. }


            Soyons fun, pratique et intelligent:
            1. long sommeTableau(long tableau[4], long tailleTableau)
            2. {
            3.      return tableau[0] + tableau[1] + tableau[2] + tableau[3];
            4. }

            Or, ça fait un peu con de faire ça, surtout que le 2e paramètre de ta fonction (la taille de ton tableau° n'est pas utilisé :) , on pourrait pas en faire quelque chose ?
            Indice: boucle + lecture d'un tableau + addition dans une variable (somme par exemple) + renvoi cette somme = ta fonction


            Après ça, ça marchera normalement ;)



            • Partager sur Facebook
            • Partager sur Twitter
              7 octobre 2007 à 21:05:29

              merci beaucoup, c'est en faite assez simple :)
              • Partager sur Facebook
              • Partager sur Twitter
                7 octobre 2007 à 21:32:37

                Revoit quand même les principaux cours, ça t'aidera :)
                • Partager sur Facebook
                • Partager sur Twitter
                  8 octobre 2007 à 18:39:36

                  Bonjour,

                  J'ai essayé de refaire l'exo 1 à ma maniere mais cela ne fonctionne pas...

                  C'est surement évident ou totallement faux mais je ne trouve pas...

                  Voici mon code:

                  1. # include<stdio.h>
                  2. void sommetableau( long *tableau, long tailletableau);
                  3. int main(int argc, char *argv[])
                  4. {
                  5.    long tableau[4]={2, 2, 3, 3};
                  6.   sommetableau( tableau, 4);
                  7.   printf("%ld", sommetableau(tableau, 4));
                  8.     return 0;
                  9. }
                  10. void sommetableau( long *tableau, long tailletableau)
                  11.         {
                  12.          return tableau[0] + tableau[1] + tableau[2] + tableau[3];
                  13.         }


                  Merci d'avance
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 octobre 2007 à 19:07:17

                    1. sommetableau( tableau, 4);

                    Ne sert à rien.

                    1. return tableau[0] + tableau[1] + tableau[2] + tableau[3];

                    J'ai posté ça sans tester, je crois qu'il faut mettre des paranthèses mais je t'ai bien dis que c'était inutile car tu n'utilisais pas ton 2e paramètre (la taille du tableau)...

                    Fais une boucle !
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Probléme

                    × 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