Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de comprehension

Sujet résolu
    3 juillet 2020 à 15:43:48

    Salut 

    Je débute dans la programmation  j'essaye actuellement de faire cette exercise (Créez une fonctionsommeTableauqui renvoie la somme des valeurs contenues dans le tableau (utilisez unreturnpour renvoyer la valeur). Pour vous aider, voici le prototype de la fonction à créer :)

    int sommeTableau(int tableau[], int tailleTableau);

    voici le code que j'ai fais : 

    int sommeTableau(int tableau[], int tailleTableau);
    
    
    int main(int argc, char *argv[])
    {
        int tableau[4] = {10, 15, 3};
    
    
        sommeTableau(tableau, 4);
    
        return 0;
    }
    
    
    
    
    int sommeTableau(int tableau[], int tailleTableau)
    {
        int i ;
    
        for(i = 0; i < tailleTableau ; i++)
            {
                return + tableau[i];
    
            }
    
    
    
    }

    Es que quelqu'un pourrais m'aider (sans me donner les réponses :) merci )

    -
    Edité par EnzoTlz 3 juillet 2020 à 21:35:09

    • Partager sur Facebook
    • Partager sur Twitter
      3 juillet 2020 à 15:46:30

      commence par regarder les messages d'erreurs du compilateur.

      ensuite, revoir les exemples d'utilisation de return. En trouver un qui ressemble à ce que tu as écrit.

      -
      Edité par michelbillaud 3 juillet 2020 à 15:47:28

      • Partager sur Facebook
      • Partager sur Twitter
        3 juillet 2020 à 15:57:31

        Je n'ai aucun message d'erreurs mais je vais allez plus me renseigner sur les utilisation du return merci :)
        • Partager sur Facebook
        • Partager sur Twitter
          3 juillet 2020 à 16:19:29

          Il faut mettre les options de compilation qui signalent les avertissements, comme -Wall

          $ gcc -Wall a.c
          a.c: In function ‘sommeTableau’:
          a.c:29:1: warning: control reaches end of non-void function [-Wreturn-type]
           }
           ^
          

          - indications : à l'intérieur de la fonction sommeTableau, il faut, dans l'ordre

          1. calculer la somme de tous les éléments

          2. ensuite _après cette boucle_, retourner le résultat.

          Ensuite, puisque la fonction retourne un résultat, ça serait bien d'en faire quelque chose.


          Curiosité, L'instruction  return + tableau[i] semble  interprétée comme return (+ tableau[i]) ;

          -
          Edité par michelbillaud 3 juillet 2020 à 16:22:14

          • Partager sur Facebook
          • Partager sur Twitter
            3 juillet 2020 à 16:58:25

            michelbillaud a écrit:

            Curiosité, L'instruction  return + tableau[i] semble  interprétée comme return (+ tableau[i]) ;

            L'opérateur unaire + existe malgré qu'il ne fasse rien.
            • Partager sur Facebook
            • Partager sur Twitter
              3 juillet 2020 à 18:07:42

              Bonjour,

              Mauvais titre

              Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

              Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

              De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

              Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

              Pour modifier votre titre, éditez le premier message de votre sujet.

              (titre originel : Exercise en C)

              Liens conseillés

              • Partager sur Facebook
              • Partager sur Twitter
                3 juillet 2020 à 20:57:11

                Pour calculer la somme de tous les éléments je dois avant les récupérer comment je peu les récupérer ?
                • Partager sur Facebook
                • Partager sur Twitter
                  3 juillet 2020 à 21:29:24

                  @EnzoTlz Bonjour, merci de modifier le titre de votre sujet comme demandé, en fonction de votre problématique.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 juillet 2020 à 21:52:50

                    Petit retour en arrière : Comment fais-tu pour afficher les éléments du tableau ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 juillet 2020 à 1:17:42

                      rouloude a écrit:

                      Petit retour en arrière : Comment fais-tu pour afficher les éléments du tableau ?

                      Pour afficher Mon tableau je fais comme ça : 

                      int sommeTableau(int tableau[], int tailleTableau);
                      
                      
                      int main(int argc, char *argv[])
                      {
                          int tableau[4] = {10, 15, 3};
                      
                      
                          sommeTableau(tableau, 4);
                      
                          return 0;
                      }
                      
                      
                      
                      
                      int sommeTableau(int tableau[], int tailleTableau)
                      {
                          int i;
                      
                          for( i =0 ; i< tailleTableau ; i++)
                              {
                      
                              printf("%d\n" , tableau[i]);
                      
                              }
                      
                      
                      }


                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 juillet 2020 à 7:16:57

                        Cette fonction devrait s'appeler afficherTableau

                        C'est _très_ important de bien nommer les choses. C'est ce qui permet de s'y retrouver.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 juillet 2020 à 7:34:47

                          michelbillaud a écrit:

                          Cette fonction devrait s'appeler afficherTableau

                          C'est _très_ important de bien nommer les choses. C'est ce qui permet de s'y retrouver.

                          C'est également important de bien faire les choses. Pourquoi la fonction est-elle de type 'int' au lieu de 'void' puisqu'on ne retourne et on n'assigne rien.

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Le Tout est souvent plus grand que la somme de ses parties.

                            4 juillet 2020 à 9:56:37

                            EnzoTlz a écrit:

                            Pour calculer la somme de tous les éléments je dois avant les récupérer comment je peux les récupérer ?

                            Tu es arrivé à les récupérer pour les afficher !

                            Et bien maintenant, au lieu de les afficher tu les additionnes !

                            Un indice : il te faudra une variable qui accumulera la somme de chaque élément. 

                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 juillet 2020 à 13:10:48

                              rouloude a écrit:

                              EnzoTlz a écrit:

                              Pour calculer la somme de tous les éléments je dois avant les récupérer comment je peux les récupérer ?

                              Tu es arrivé à les récupérer pour les afficher !

                              Et bien maintenant, au lieu de les afficher tu les additionnes !

                              Un indice : il te faudra une variable qui accumulera la somme de chaque élément. 

                              Je vois pas trop comment faire j'ai essayer ça :

                              int sommeTableau(int tableau[], int tailleTableau)
                              {
                                  int i;
                                  int somme;
                              
                                  for( i =0 ; i< tailleTableau ; i++)
                                      {
                              
                                      printf("%d\n" , tableau[i]);
                              
                              
                                      }
                              
                                      somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
                                      printf("La somme est : %d",somme);
                              
                              
                              
                              }
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 juillet 2020 à 13:11:20

                                Faudrait savoir ce que veut dire "recuperer" précisément.

                                Et qui est le "on" qui récupère.

                                C'est la porte ouverte à une confusion entre

                                • Saisir le tableau (scanf)
                                • Transmettre le tableau en paramètre 

                                -
                                Edité par michelbillaud 4 juillet 2020 à 13:11:43

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 juillet 2020 à 13:23:47

                                  rouloude a écrit:

                                  Et bien maintenant, au lieu de les afficher tu les additionnes !

                                  La fonction n'a pas à afficher les valeurs du tableau, ni le résultat d'ailleurs. Elle a juste à additionner les éléments du tableau, et retourner le résultat.

                                  Dans ta boucle d'affichage tu es bien arrivé à les afficher un par un et bien au lieu de les afficher un par un tu les additionnes un par un.

                                  -
                                  Edité par rouloude 4 juillet 2020 à 13:25:18

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 juillet 2020 à 14:51:18

                                    rouloude a écrit:

                                    rouloude a écrit:

                                    Et bien maintenant, au lieu de les afficher tu les additionnes !

                                    La fonction n'a pas à afficher les valeurs du tableau, ni le résultat d'ailleurs. Elle a juste à additionner les éléments du tableau, et retourner le résultat.

                                    Dans ta boucle d'affichage tu es bien arrivé à les afficher un par un et bien au lieu de les afficher un par un tu les additionnes un par un.

                                    -
                                    Enfaite , le probleme c'est que je vois pas comment je peut faire pour les additioner a par comme sa :

                                            somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
                                            printf("La somme est : %d",somme);
                                    


                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 juillet 2020 à 15:19:45

                                      et pour les afficher, tu fais

                                      printf("%d\n", tableau[0]);
                                      printf("%d\n", tableau[1]);
                                      printf("%d\n", tableau[2]);
                                      printf("%d\n", tableau[3]);
                                      

                                      ???

                                      Indication

                                      int somme = 0;
                                      
                                      somme = somme + tableau[0];
                                      somme = somme + tableau[1];
                                      



                                      -
                                      Edité par michelbillaud 4 juillet 2020 à 15:22:50

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        4 juillet 2020 à 15:29:10

                                        michelbillaud a écrit:

                                        et pour les afficher, tu fais

                                        printf("%d\n", tableau[0]);
                                        printf("%d\n", tableau[1]);
                                        printf("%d\n", tableau[2]);
                                        printf("%d\n", tableau[3]);
                                        

                                        ???

                                        Indication

                                        int somme = 0;
                                        

                                         Pour les afficher j'utilise une boucle

                                            for( i =0 ; i< tailleTableau ; i++)
                                                {
                                        
                                                printf("%d\n" , tableau[i]);
                                                
                                        
                                        
                                                }

                                        Mais de base je veut juste une boucle qui me permet de calculer la somme de mon tableau comme l’exercice le demande

                                        somme = somme + tableau[0];
                                        somme = somme + tableau[1];
                                        



                                        -
                                        Edité par michelbillaud il y a 3 minutes



                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          4 juillet 2020 à 16:36:40

                                          Si on calcule

                                          somme = tableau[0] + tableau[1] + tableau[2] + tableau[3] + tableau[4];

                                          il n'y a pas besoin de boucle. Mais ça nécessite de savoir à l'avance le nombre d'éléments du tableau. Et puis quand on manipulera des tableaux de plusieurs millions d'éléments, ça sera long à écrire.

                                          L'astuce, c'est de ne pas tout calculer d'un coup. Par exemple on pourrait commencer par additionner les deux premiers :

                                          somme_partielle = tableau[0] + tableau[1];

                                          Et ensuite ? On pourrait rajouter les autres éléments de proche en proche :

                                          somme_partielle = somme_partielle + tableau[2];  // j'ajoute le 3è à la somme
                                          somme_partielle = somme_partielle + tableau[3];  // j'ajoute le 4è à la somme
                                          somme_partielle = somme_partielle + tableau[4];  // j'ajoute le 5è à la somme
                                          

                                          et ainsi de suite. Et là, on voit bien (non ?) qu'on peut utiliser une boucle. Le gros avantage d'une boucle, c'est qu'on peut l'utiliser quelle que soit le nombre d'éléments.

                                          C'est juste une idée pour essayer de réfléchir tout haut, je ne dis pas que c'est ce qu'il y a de plus optimal.

                                          -
                                          Edité par robun 4 juillet 2020 à 16:37:36

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            4 juillet 2020 à 17:25:49

                                            @EnzoTlz:
                                            Si tu es capable de faire une boucle pour afficher, tu devrais pouvoir en faire une pour additionner.
                                            Et comme l'a dit robun, que ferais-tu si tu avais des millions d'éléments à additionner et que tu ne sais pas le nombre avant le début de l'exécution?
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Le Tout est souvent plus grand que la somme de ses parties.

                                              4 juillet 2020 à 19:14:29

                                              Ok super j'ai compris merci a tous de m'avoir aider !
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                4 juillet 2020 à 21:48:23

                                                EnzoTlz a écrit:

                                                Ok super j'ai compris merci a tous de m'avoir aider !

                                                Et ça donne quoi ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                probleme de comprehension

                                                × 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