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 :

Élément de 2 tableaux


Sujet :

Langage Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut Élément de 2 tableaux
    Bonjour,

    Je souhaite faire un traitement sur un fichier. Je place chaque ligne de mon fichier dans un tableaux @tabl puis je place chaque caractères de chaque ligne dans un tableau @tabc.
    Mon problème est le suivant :
    quand le dernier caractère de la ligne (pointeur à la position 6) est a alors je passe à l'élément suivant du tableau celui qui se trouve à la ligne+1 (pointeur position 0) .

    Est ce que quelqu'un sait comment je pourrais réaliser celà?
    Merci d'avance.

  2. #2
    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
    quand le dernier caractère de la ligne (pointeur à la position 6) est a alors je passe à l'élément suivant du tableau celui qui se trouve à la ligne+1 (pointeur position 0) .
    Pourrais-tu donner un exemple car ce n'est pas clair.
    Si la ligne se termine par la lettre 'a', tu passes à la ligne suivante et sinon?

    As-tu un début de code à proposer?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut
    Par exemple le fichier suivant :

    lapin
    loup
    chat

    lorsque l'on affiche le tableau @tabl
    ( print "ligne $_ correspond à : $tabl[$_]\n", on a:
    Ligne 1 correspond à : lapin
    Ligne 2 correspond à : loup
    Ligne 3 correspond à : chat


    Lorsque l'on affiche le tableau @tabc,
    (print "caractere $_ correspond à : $tabc[$_] on a
    caractere 1 correspond à : l
    caractere 2 correspond à : a
    caractere 3 correspond à : p
    caractere 4 correspond à : i
    caractere 5 correspond à : n
    caractere 1 correspond à : l
    caractere 2 correspond à : o
    caractere 3 correspond à : u
    caractere 4 correspond à : p
    caractere 1 correspond à : c
    caractere 2 correspond à : h
    caractere 3 correspond à : a
    caractere 4 correspond à : t



    Pour le traitement, ce que je souhaite c'est :
    je suis à la ligne 1, je parcourt chaque caractère. Lorsque j'arrive au dernier caractère (ici n donc ligne 1 caractère 5), je passe à la ligne 2 caractère 1 (ici l )pour poursuivre le traitement.

    Est ce que tu comprends mieux ce que je souhaite réaliser ?

  4. #4
    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
    Voila une idée de traitement, adapte le à tes besoins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use warnings;
     
    open (FILE, $file) or die "impossible d'ouvrir le fichier $file\n";
    my @tab1 = <FILE>;
    close(FILE);
     
    my @tabc;
    foreach my $line (@tab1){
        my @caracteres = split (//, $line);
        push (@tabc, @caracteres);
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut
    Merci jasmine80 mais j'ai deja le code pour placer les élèments dans les tableaux.
    Là où j'ai un problème c'est lorsque je dois ecrire la condition :

    je suis à la ligne 1, je parcourt chaque caractère. Lorsque j'arrive au dernier caractère (ici n donc ligne 1 caractère 5), je passe à la ligne 2 caractère 1 (ici l )pour poursuivre le traitement.

  6. #6
    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
    je suis à la ligne 1, je parcourt chaque caractère. Lorsque j'arrive au dernier caractère (ici n donc ligne 1 caractère 5), je passe à la ligne 2 caractère 1 (ici l )pour poursuivre le traitement.
    Je suis perdue. Si tu as réussi à obtenir le tableau final, pourquoi vouloir écrire les conditions du traitement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    my @tabc;
    # on prend ligne par ligne
    foreach my $line (@tab1){
        # je suis à la ligne x
        # on récupère tous les caractères
        my @caracteres = split (//, $line);
        push (@tabc, @caracteres);
        # quand on a récupéré tous les caractères
        # on passe à la ligne suivante 
    }
    Si ce n'est pas ce que tu veux, essaie d'expliquer autrement parce que je ne comprends pas

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut
    en fait j'étudie la syntaxe.

    Pour le fichier
    lapin
    loup
    chat

    si j'ai un n je dois obligatoirement avoir un l sinon erreur.
    Je regarde chaque caractère de la première. Le dernier caractère est un n. je regarde le caractère suivant. n est le dernier caractère de la ligne. Je regarde donc le premier caractère de la ligne suivante.

    est ce que c'est plus clair ?

  8. #8
    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
    C'est en effet beaucoup plus clair ainsi.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/usr/local/bin/perl
     
    use strict;
    use warnings;
     
    my @tabl = qw[
                        lapin
                        loup
                        chat
                    ];
     
    my %h_couples_lettres = (
                                'nl' => 1,
                                'pc' => 1,
                          );
     
    my $derniere_lettre = "";
    foreach my $ligne (@tabl){
       if ($ligne =~ /^([a-z])\w+([a-z])$/i){
            my $premiere_lettre = $1;
            # on passe la première ligne
            if ($derniere_lettre ne ""){
               # on crée la combinaison
               #    - dernière lettre de la ligne précédente
               #    - première lettre de la ligne actuelle
                my $couple = lc($derniere_lettre.$premiere_lettre);
     
                # on vérifie que cette jonction soit
                # dans la liste de celles acceptées
                if(exists $h_couples_lettres{$couple}){
                    ... traitement
                }
            }
            # on garde en mémoire la dernière
            # lettre pour le tour suivant
            $derniere_lettre = $2;
       }
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2013, 18h59
  2. comparer les éléments de deux tableaux
    Par Nayra dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 26/11/2010, 17h26
  3. Tableau dont les éléments sont des tableaux
    Par tpdm dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/01/2010, 20h02
  4. Réponses: 2
    Dernier message: 29/05/2008, 22h18
  5. Réponses: 4
    Dernier message: 16/03/2007, 19h25

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