Partage
  • Partager sur Facebook
  • Partager sur Twitter

exercice

Somme des elements d'un tableau (doublons)

    19 août 2017 à 17:54:00

    Écrire une fonction nommée hasNValues qui prend un tableau et un entier en paramètre et qui retourne 1 si la quantité totale des éléments du tableau est égale a l’entier sans tenu compte des doublons.
    • Partager sur Facebook
    • Partager sur Twitter
      19 août 2017 à 18:05:30

      Bonjour à toi aussi, joli exercice.

      • Partager sur Facebook
      • Partager sur Twitter
      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
        19 août 2017 à 18:06:37

        Waouw, premier point réglé:  créer ton propre post.

        Second point à régler: montrer le code que tu as écrit et qui ne fonctionne pas, pour qu'on puisse t'aider....

        -
        Edité par edgarjacobs 19 août 2017 à 18:08:10

        • 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

          21 août 2017 à 10:41:10

          La réponse à cet exercice est triviale, il suffit de toujours retourner 1, ça couvrira bien le cas requis.

          int hasNValues(int *arr, int n) {
             return 1;
          }

          Mais à mon avis la donnée de l'exercice est défectueuse. D'ailleurs elle est incompréhensible.

          • Partager sur Facebook
          • Partager sur Twitter
            22 août 2017 à 11:48:34

            Attention, tu supposes que l'entier donné en paramètre est la quantité d'éléments du tableau (comme on le fait toujours), mais l'énoncé ne le dit pas. Du coup il faut peut-être faire quelque chose comme :

            int hasNValues(int arr[TAILLE], int n) // (TAILLE est un #define)
            {
                if (n == TAILLE) // la quantité d'éléments du tableau est égale à l'entier
                    return 1 ;
                else
                    return 0 ;
            }
            

            (qu'on peut bien sûr écrire de façon plus compacte).

            -
            Edité par robun 22 août 2017 à 17:52:33

            • Partager sur Facebook
            • Partager sur Twitter
              22 août 2017 à 15:43:32

              ouais mais il y a un ptit probleme,vous avez oublie les doublons....  int tab[]={1,2,2,5,7,7,8,9,7,4}; la qntite d'element de ce tab est 10 mais sans tenir compte des doublons la qntite devient 7
              • Partager sur Facebook
              • Partager sur Twitter
                22 août 2017 à 16:47:49

                SonnyAfoulay a écrit:

                ouais mais ...

                Oui mais c'est a toi de faire l'exo, pas à nous...

                • Partager sur Facebook
                • Partager sur Twitter
                ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
                  22 août 2017 à 17:55:12

                  SonnyAfoulay : pour l'instant tu dois trouver l'algorithme pour faire ceci. Ensuite seulement tu écriras le programme. Une bonne méthode pour trouver cet algorithme, c'est de résoudre le problème à la main, avec un papier et un crayon. En résolvant ce problème à la main, tu regarderas comment tu procèdes (peut-être que tu as barré les doublons, ou que tu les as comptés pour les retrancher ensuite, etc.) et tu en déduiras l'algorithme. Ensuite tu écriras le programme.

                  As-tu déjà trouvé un algorithme ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 août 2017 à 19:33:07

                    voila mon code mais je n'arrive pas a gerer les doublons(les elements qui se repetent)

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

                    int main()
                    {int hasNValues; int tab[]={2,3,8,8, 7,11}; int len=6;
                       int taille=sizeof (tab) / sizeof(int);
                        printf("le nombre d'element du tableau est:%d",taille);
                    printf("\nl'entier est:%d",len);

                    {
                    if(taille==len)
                        return 1;
                    else
                        return 0;
                    }
                    }

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 août 2017 à 20:20:34

                      Justement, comment ferais-tu pour gérer les doublons si tu le faisais à la main ? Peut-être que tu les compterais ? On pourrait imaginer une fonction qui compte les doublons du tableau. Ensuite, dans la fonction qui compte le nombre d'éléments distincts, on procède d'abord comme tu as fait, puis on y retranche le nombre de doublons. Quelque chose comme ça.

                      Tu saurais écrire une fonction qui compte les doublons ?

                      (Au fait, est-ce que les doublons sont forcément consécutifs ? Dans ton exemple oui, mais est-ce qu'on peut avoir un tableau comme {2, 3, 8, 7, 11, 8} ?)

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 août 2017 à 21:22:11

                        Hello,

                        robun a écrit:

                        (Au fait, est-ce que les doublons sont forcément consécutifs ? Dans ton exemple oui, mais est-ce qu'on peut avoir un tableau comme {2, 3, 8, 7, 11, 8} ?)

                        Osons :) !  Un p'tit coup de qsort() ? (il n'est pas spécifié que le tableau d'origine doit être conservé....)

                        • 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

                          22 août 2017 à 22:04:45

                          Tu peux aussi faire deux boucles imbriquées ou pour chaque case du tableau, tu recherches (à l'aide de la deuxième boucle) si dans les cases précédentes elle a un doublon, s'il n'y a pas de doublon tu incrémentes un compteur, et ainsi de suite avec toutes les cases du tableau.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 août 2017 à 0:18:45

                            Même si c'est pas la question, la solution avec le tri a une meilleure complexité (on va dire qu'on utilise un tri en O(n ln(n))). ;)

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                              23 août 2017 à 0:42:36

                              Oui, mais je ne suis pas certain que qsort soit autorisé dans ce genre d'exercice. Je préfère donc resté au niveau du PO.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 août 2017 à 3:04:36

                                Ouep. D’ailleurs, faudra qu’il réponde à la question de @robun. Si le tableau est initialement trié, la question ne se pose même plus. ^^

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                  23 août 2017 à 16:39:43

                                  robun a écrit:

                                  (Au fait, est-ce que les doublons sont forcément consécutifs ? Dans ton exemple oui, mais est-ce qu'on peut avoir un tableau comme {2, 3, 8, 7, 11, 8} ?)


                                  NN...pas forcément consécutif,,,,,on peut avoir int tab[]={3,8,9,6,3,9,8};
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    23 août 2017 à 16:45:41

                                    Dans ce cas je pense que l'idée proposée par rouloude hier (les deux boucles imbriquées) est un bon point de départ.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    exercice

                                    × 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