Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

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 :
    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
    Membre Expert

    Homme Profil pro Laurent R.
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 182
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent R.
    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 182
    Points : 2 497
    Points
    2 497

    Par défaut

    Dans ta boucle:

    Code :
    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.
    Mes articles sur La programmation fonctionnelle en Perl publiés sur ce site:

    ________
    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 : 17
    Points
    17

    Par défaut

    Pas mal d'erreurs j'ai l'impression :
    Code :
    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
    Membre Expert

    Homme Profil pro Laurent R.
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 182
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent R.
    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 182
    Points : 2 497
    Points
    2 497

    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.
    Mes articles sur La programmation fonctionnelle en Perl publiés sur ce site:

    ________
    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
    16 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 545
    Points : 465 274
    Points
    465 274

    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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •