IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algorithme de comparaison


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut Algorithme de comparaison
    Salut,

    Je souhaiterai écrire un algorithme qui permette de comparer plusieurs champs entre eux (4 pour commencer).
    Le règle serait que la première colonne est la "référence" et donc ne peut contenir de null.
    Voici quelque cas :
    COL1 COL2 COL3 COL4 
    Q       Q      Q       Q
    Q      NULL  A       Q
    Q     Q        A       Q
    Q     Q        Q       C
    Q     Q        A       D
    Q     NULL   NULL  NULL
    Voici mon idée d'algorithme, mais je ne suis pas sur que ça couvre tous les cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Si COL2 est NON NULL ET COL1 <> COL2
      Alors
        DIFFERENCE
    SINON Si COL3 est NON NULL ET COL1 <> COL3
      Alors
        DIFFERENCE
    SINON Si COL4 est NON NULL ET COL1 <> COL4
      Alors
        DIFFERENCE
    SINON
        PAS DE DIFFERENCE
    Je me base sur la colonne1 car elle est toujours renseigné,
    l'idée est que les 4 colonnes doivent être égale.
    Ma crainte est que tous les cas ne soit pas couvert,
    en sachant qu'aujourd'hui j'ai 4 colonnes mais que demain j'en aurai plus.
    Je teste si le champ est NON NULL, car si c'est la cas, je ne fais pas de comparaison sur le champ.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    soit tu cherches la différence, soit tu cherches l'égalité. Ici, il me semble que tu mélanges.

    Si COL2 est non null OU COL1 <> COL2
    alors DIFFERENCE
    Mais pourquoi ne cherches tu pas simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    si COL1 == COL2 == COL3 == COL4 
    alors EGALITE
    sinon DIFFERENCE
    ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    Merci pour ta réponse.

    En faite ma logique,
    c'est tester colonne par colonne afin d'afficher dans le cas ci-dessous par exemple, la différence se trouve sur la colonne COL2.
    Si COL2 est NON NULL ET COL1 <> COL2
    Alors
    DIFFERENCE
    Si j'ai 10 colonnes à tester, c'est plus simple d'avoir le nom de la colonne sur laquelle il y a une différence.

    Je pense que ça à l'air trop complexe et que ça fait pas mal de combinaison à tester, si jamais le nombre de colonne à tester augmente.

    Je pense que je vais opter pour l'option égalité.
    Si c'est pas égale, c'est forcément qu'il y a une différence.
    SI COL1 == COL2 == COL3 == COL4
    ALORS EGALITE
    SINON DIFFERENCE

  4. #4
    Membre actif

    Homme Profil pro
    autodidacte
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par Melvine Voir le message
    Si j'ai 10 colonnes à tester, c'est plus simple d'avoir le nom de la colonne sur laquelle il y a une différence.

    Je pense que ça à l'air trop complexe et que ça fait pas mal de combinaison à tester, si jamais le nombre de colonne à tester augmente.
    Si tu veux tu peux mettre les valeurs de tes N colonnes dans un tableau de taille N et comparer ensuite les valeurs 2 à N avec la 1ère valeur.
    Si c'est pas égal, tu imprimes l'indice du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Pour une ligne :
    
    NCOL=10;
    tab est un tableau de taille NCOL;
    
    pour i=1 à NCOL:
      tab[i]=valeur dans la colonne i
    
    pour i=2 à NCOL:
      si (tab[i] <>tab[1])
         imprimer ("différence entre col1 et col" i )
    maintenant si tu veux le résultat de toutes les comparaisons de colonnes (ça prend un temps quadratique par ligne):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Pour une ligne :
    
    NCOL=10;
    tab est un tableau de taille NCOL;
    
    pour i=1 à NCOL:
      tab[i]=valeur dans la colonne i
    
    pour j=1 à ncol :
      pour i=j+1 à NCOL:
        si (tab[i] <>tab[j])
           imprimer ("différence entre col" i "et col" j )
    Bien à toi.
    Toujours à adapter le problème à la structure de la machine, mais se soigne pour faire l'inverse.

Discussions similaires

  1. Algorithme de comparaison de 2 images
    Par Ashkell dans le forum 2D
    Réponses: 8
    Dernier message: 11/04/2008, 13h47
  2. Algorithme de comparaison de texte?
    Par tixu dans le forum Outils
    Réponses: 2
    Dernier message: 02/09/2007, 00h02
  3. Algorithmes de comparaison de 2 arbres
    Par Jaxofun dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/04/2006, 11h10
  4. algorithme de comparaison
    Par sarakova dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 26/02/2006, 15h17
  5. Algorithme de comparaison lexicale
    Par BizuR dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 06/07/2005, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo