Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exo 1 tableau

    16 août 2007 à 13:00:27

    Dans le tuto de m@teo, au chapitre des tableau, il nous demande de faire 2 3 exercices

    Citation : Enonce de m@teo

    Exercice 1 : créer une fonction sommeTableau qui renvoie la somme des valeurs contenues dans le tableau (utilisez un return pour renvoyer la valeur).



    Voici mon code sa marche, mais quand je lui demande de m'afficher le resultat il maffiche 0
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. long sommeTableau(long tableau[], long tailleTableau);
    4. int main(int argc, char *argv[])
    5. {
    6.         long tableau[5] = {1,1,1,1,1}, i=0, a=0;
    7.         sommeTableau(tableau,5);
    8.         printf("%ld", a);
    9. }
    10. long sommeTableau(long tableau[], long tailleTableau)
    11. {  
    12.         long a=0, i;
    13.     for(i=0; i<tailleTableau; i++)
    14.         {
    15.          a=a+*(tableau + i);
    16.                  printf("%ld\n", a);
    17.         }
    18.         return a;
    19. }


    Merci de mexpliquer la solution

    • Partager sur Facebook
    • Partager sur Twitter
      16 août 2007 à 13:25:16

      Pour commencer, ta variable i dans ta fonction principal main ne sert a rien(sa enpêchera pas ton programme de fonctionner mais sa fait pas bien) ;):p

      Ensuite tu appelle la fonction sommeTableau qui return ton nombre "a" mais tu ne lenregistre dans aucune variable,
      c'est un peu comme si tu écrivai B+C au lieu de a=B+C et ensuite tu fait un printf de ta variable "a" que tu a initialiser a 0 dans le main et tu le modifie pas, donc ton programme affiche 0 ;)

      Je ne sais pas si j'ai été assez clair mais je pense que tu peu trouver la reponse avec se que je vien de te dire...

      • Partager sur Facebook
      • Partager sur Twitter
        16 août 2007 à 14:18:40

        "a=a+*(tableau + i);" peut etre ecris comme ca "a += tableau[i];" c'est plus simple et plus rapide(a ecrire), sinon le nom de variable "a" n'est pas tres explicite
        • Partager sur Facebook
        • Partager sur Twitter
          31 août 2007 à 22:30:18

          j ais transformer mon code en ça :
          (en ayant relu le cour des pointeurs)

          1. #include <stdio.h>
          2. #include <stdlib.h>
          3. void sommeTableau(long tableau[], long tailleTableau);
          4. int main(int argc, char *argv[])
          5. {
          6.         long  a=0;
          7.         long *pointeur=&a;
          8.         long tableau[5] = {1,1,1,1,1};
          9.         sommeTableau(tableau,5,a);
          10.         printf("%ld", *pointeur);
          11. }
          12. void sommeTableau(long tableau[], long tailleTableau, long *pointeur)
          13. {  
          14.         long i=0;
          15.     for(i=0; i<tailleTableau; i++)
          16.         {
          17.          *pointeur =*pointeur +*(tableau + i);
          18.         }
          19. }


          helas il me dit que sa ne marche pas et il mindique :

          Citation

          1>------ Début de la génération : Projet : jeu, Configuration : Debug Win32 ------
          1>Compilation en cours...
          1>jeu.cpp
          1>c:\documents and settings\maxime basile\mes documents\maxime\programmation\jeu\jeu\jeu.cpp(12) : error C2660: 'sommeTableau' : la fonction ne prend pas 3 arguments
          1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Maxime Basile\Mes documents\Maxime\programmation\jeu\jeu\Debug\BuildLog.htm"
          1>jeu - 1 erreur(s), 0 avertissement(s)
          ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========


          • Partager sur Facebook
          • Partager sur Twitter
            31 août 2007 à 22:32:29

            Ou l'art de faire des choses totalements inutiles...
            Pourquoi un pointeur ? Sérieusement ça sert à rien surtout que tu dois renvoyer la valeur et pas l'écrire avec un printf dans la fonction. Bref tu as voulu nous impressioner ou quoi? On sait utiliser les pointeurs aussi -.-"
            • Partager sur Facebook
            • Partager sur Twitter
              31 août 2007 à 23:41:08

              Revois le cour sur les function, renvoyer un résultat avec return ^^
              • Partager sur Facebook
              • Partager sur Twitter

              Exo 1 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