p
u
b
l
i
c
i
t
é
publicité

Discussion: Boucle for probleme

  1. #1
    Invité de passage
    Inscrit en
    octobre 2012
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : octobre 2012
    Messages : 28
    Points : 1
    Points
    1

    Par défaut Boucle for probleme

    Bonjour

    Debutant en Perl. Je voudrais savoir comment on peut recuperer la valeur a l'indice i d'un tableau qui est dans un for. Je ne sais meme pas si c'est clair ce que je raconte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    for (my $i=1;@line2 != 0;$i+=2)
    	{	
    	if ($line2[$i] != "no_prj")
    		{
    			@line3=($line2[$i-1],@line3);
    		}
     
    	}
    En gros je n'arrive pas a recuperer $line2[i] car il me dit que ma chaine est vide alors qu'il yest sense avoir quelque chose .

    Merci d'avance

    Cordialement

  2. #2
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 1 742
    Points : 4 689
    Points
    4 689
    Billets dans le blog
    1

    Par défaut

    Dans ta boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (my $i=1;@line2 != 0;$i+=2)
    la condition d'arrêt ";@line2 != 0;" est sans doute fausse: en gros, elle dit: continue tant que le nombre d'éléments du tableau @ligne2 est différent de 0. Comme tu ne modifies pas le tableau @line2, de deux choses l'une: soit le tableau est vide au début, et la boucle ne s'exécutera pas; soit il n'est pas vide, et la boucle continuera à boucler pour toujours.

    J'imagine que tu veux peut-être plutôt quelque chose comme: "$line2[$i] != 0;". Mais même alors, le code est toujours erroné, car comme rien ne modifie $line2[$i], tu auras de nouveau soit aucune exécution de la boucle, soit une boucle infinie.

    Peut-être pourrais-tu expliquer précisément ce que tu veux faire pour que l'on puisse t'aider plus efficacement.
    La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements

    _____
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  3. #3
    Invité de passage
    Inscrit en
    octobre 2012
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : octobre 2012
    Messages : 28
    Points : 1
    Points
    1

    Par défaut

    Je voudrais en quelque sorte lire ma boucle sans préalable condition

    Merci de ton aide en tout cas .

  4. #4
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 5
    Points : 18
    Points
    18

    Par défaut

    Pas mal d'erreurs j'ai l'impression :
    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
     
    # Ça devrais plutôt être à mon avis : 
    # for(my $i = 1; exists $line2[$i]; $i += 2)
     
    for (my $i=1;@line2 != 0;$i+=2)
    {	
           # Il faut utiliser l'opérateur 'ne' pour comparer 2 chaines :
           # if($line2[$i] ne "no_prj")
    	if ($line2[$i] != "no_prj")
    	{
                    # ensuite ici, ça sera à mon avis plus joli et plus efficace de faire :
                    # unshift @line3, $line2[$i-1];
    		@line3=($line2[$i-1],@line3);
    	}
     
    }

  5. #5
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 1 742
    Points : 4 689
    Points
    4 689
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par nico38100 Voir le message
    Je voudrais en quelque sorte lire ma boucle sans préalable condition .
    Il ne s'agit pas d'une condition préalable, mais d'une condition d'arrêt, qui arrête la boucle quand elle devient fausse. Si tu n'en mets pas, tu auras une boucle sans fin. Mais évidemment, si elle est fausse dès le début, ta boucle ne s'exécutera même pas une fois.

    Il va vraiment falloir que tu explique ce que tu veux faire et ce que contiennent tes variables avant d'entrer dans la boucle (ou du moins ce que tu penses qu'elles contiennent) pour l'on puisse d'aider. Là, je ne comprends pas ton code.
    La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements

    _____
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    17 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 17 683
    Points : 492 609
    Points
    492 609

    Par défaut

    Le problème est résolu ?

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

Discussions similaires

  1. Probleme boucle for
    Par griese dans le forum Linux
    Réponses: 4
    Dernier message: 06/12/2006, 14h39
  2. [Tableaux] Probleme de boucle for
    Par keumlebarbare dans le forum Fonctions
    Réponses: 12
    Dernier message: 20/09/2006, 14h29
  3. probleme dans un boucle for
    Par accoustic dans le forum Delphi
    Réponses: 2
    Dernier message: 26/08/2006, 10h45
  4. Ksh, problème avec une simple boucle for
    Par herzleid dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2006, 14h45
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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