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

Langage Perl Discussion :

manipulation d'arrays recherche de valeurs


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut manipulation d'arrays recherche de valeurs
    Bonjour;

    J'ai deux arrays dont l'une contient une sous partie des éléments de la seconde. J'aimerais connaitre les éléments n'étant pas commun aux deux arrays.

    my @AccReq = ('AF148850','AF148851','AZERTY','X55640');
    my @AccTrouves = ('AF148850','AF148851','X55640');


    J'aimerais savoir que AZERTY ne se trouve pas dans ma seconde array.
    Le programme que j'ai écrit fonctionne bien mais j'aimerais savoir si il n'existe pas une fonction prédéfinie en perl ou une meilleure façon de procéder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    my @AccReq = ('AF148850','AF148851','AZERTY','X55640');
    my @AccTrouves = ('AF148850','AF148851','X55640');
    my $NombreAccDemandes = @AccReq;
    my $NombreAccTrouves = @AccTrouves;
     
     
    for (my $e=0; $e<$NombreAccDemandes; $e++)
    {
            my $Compteur=0;
            for(my $z=0; $z<$NombreAccTrouves; $z++)
            {
                    if  ($AccTrouves[$z] eq $AccReq[$e])
                    {
                            print "$AccTrouves[$z] =>  trouvé\n";
                            $Compteur =1;
                    }
            }
            if ($Compteur == 0)
            {
                    print "$AccReq[$e] =>  Non trouvé\n";
            }
     
    }
    Résultat obtenu (et voulu)

    AF148850 => trouvé
    AF148851 => trouvé
    AZERTY => Non trouvé
    X55640 => trouvé


    Merci,


    Jasmine,

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour,

    Personnelement, pour ce genre de choses, j'ai tendance à utiliser les tables de hachage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my %h;
    $h{$_} = 0 foreach (@AccReq);
    foreach (@AccTrouves)
    {
       print "$_ => trouvé\n" and next if (exists $h{$_});
       print "$_ => Non trouvé\n";
    }
    Je pense que c'est déjà plus optimisé que ta méthode

  3. #3
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    wep, les hash c'est bon, mangez-en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    my %instances = ();
    map { $instances{$_}++ } @AccReq;
    map { $instances{$_}++ } @AccTrouves;
    my @items   = grep { $instances{$_} == 1 } keys(%instances);
    my @doubles = grep { $instances{$_} == 2 } keys(%instances);
     
    print("Items uniques : \n * "   . join("\n * ", @items) . "\n");
    print("Items en double : \n * " . join("\n * ", @doubles) . "\n");
    PS : Attention Woufeil, ton code n'affiche que les items présents dans @AccTrouves, si jamais un item est présent dans @AccReq et pas dans @AccReq, il n'apparaitra pas, tu as inversé les variables !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my %h;
    $h{$_} = 0 foreach (@AccTrouves);
    foreach (@AccReq)
    {
       print "$_ => trouvé\n" and next if (exists $h{$_});
       print "$_ => Non trouvé\n";
    }

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Je t'avouerais que j'ai pas trop cherché à comprendre quel tableau ne devait pas contenir les variables de tel autre

    Merci de cette correction !

  5. #5
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci beaucoup, autant prendre de bonnes habitudes dès le début
    Jasmine,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#][WinForm]Recherche de valeur
    Par doudoustephane dans le forum Windows Forms
    Réponses: 9
    Dernier message: 30/05/2006, 15h12
  2. recherche de valeurs dans un tableur excel
    Par maxiut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/05/2006, 07h25
  3. Recherche de valeurs propres
    Par petdelascar dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 01/03/2006, 17h11
  4. [DAO]rechercher la valeur max d'un identifiant
    Par stressy dans le forum Access
    Réponses: 3
    Dernier message: 13/12/2005, 11h28
  5. Réponses: 7
    Dernier message: 26/10/2004, 11h02

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