Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème fonction comparaison liste-tableau

Sujet résolu
    24 novembre 2020 à 21:45:05

    Bonjour, j'ai un problème avec mon code et je ne vois pas pourquoi ça déconne.
    En gros, je veux créer une fonction qui teste si un liste chainé contient les mêmes int qu'un "tableau" de int appelé data en paramètre.
    Ma fonction test vérifie 3 conditions, si la longueur est supérieur, inférieur ou si la liste et le tableau sont différents dans leurs contenus.
    Le test ne passe pas pour la 3e conditions
    c'est à dire si je créer une liste à partir de ce tableau : static const int origin[]    = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
     et que je compare à *data = { 1, 2, 3, 4, 5, 6, 7, 8, 10 };
    le retour sera égal à true alors que je veux false, des conseils ?

    struct list_node {
      int data;
      struct list_node *next;
    };
    
    struct list {
      struct list_node *first;
    };
    
    bool list_equals(const struct list *self, const int *data, size_t size) {
    
        if (list_size(self)!=size)
            return false;
           
        struct list_node *curr = self->first;
        
        for (size_t i = 0; i>size;i++) {
            if (curr->data != data[i])
                return false;
               
            curr=curr->next;
        }
           
      return true;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2020 à 22:22:08

      Bonjour ! C'est normal, le i>size à la ligne 17 ? Hypothèse : à cause de cette erreur, il ne va jamais dans la boucle, du coup il va à l'instruction qui suit : « return true ».
      • Partager sur Facebook
      • Partager sur Twitter
        24 novembre 2020 à 22:33:22

        robun a écrit:

        Bonjour ! C'est normal, le i>size à la ligne 17 ? Hypothèse : à cause de cette erreur, il ne va jamais dans la boucle, du coup il va à l'instruction qui suit : « return true ».


        Alors, effectivement c'était ça le problème ^^'
        Je pensais tellement que c'était un problème de logique que j'ai pas vérifié la syntaxe ! :)
        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2020 à 13:23:15

          En fréquentant ce forum, j'ai remarqué que beaucoup de gens se trompent eux-mêmes en ayant des préjugés sur les causes d'erreur. Et j'ai alors remarqué que ça m'arrivait, et sûrement aussi souvent. Seulement j'ai un « truc » : en cas de problème, je mets des 'printf' partout. Là j'aurais mis des 'printf' dans la boucle et j'aurais constaté immédiatement que le programme ne va jamais dedans. Dans ce cas, on est obligé de contrôler les variables, donc l'erreur aurait été détectée assez vite. Conseil quand tu es bloqué : si tu n'utilises pas de débogueur, mais des 'printf' partout.
          • Partager sur Facebook
          • Partager sur Twitter

          Problème fonction comparaison liste-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