Problème en perl
Résolu/Fermé
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
-
6 janv. 2008 à 13:12
eccomi Messages postés 13 Date d'inscription dimanche 9 décembre 2007 Statut Membre Dernière intervention 5 janvier 2009 - 8 janv. 2008 à 21:25
eccomi Messages postés 13 Date d'inscription dimanche 9 décembre 2007 Statut Membre Dernière intervention 5 janvier 2009 - 8 janv. 2008 à 21:25
A voir également:
- Problème en perl
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- Tableau(perl) ✓ - Forum Perl
- PERL -- liste - Forum Perl
- Perl foreach ✓ - Forum Perl
11 réponses
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
7 janv. 2008 à 18:56
7 janv. 2008 à 18:56
Bonsoir à tous,
Au sujet du message précédent, j'aimerais également faire dans un autre programme des tableaux avec des références contenant 3 éléments chacune.
Merci.
Au sujet du message précédent, j'aimerais également faire dans un autre programme des tableaux avec des références contenant 3 éléments chacune.
Merci.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
7 janv. 2008 à 20:10
7 janv. 2008 à 20:10
Salut,
ton script
ton script
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); my $cpt=0; foreach my $x(@array){ push @{$array2[$cpt]}, $x; $cpt++; push @{$array2[$cpt]}, $x; } shift @array2; pop @array2; for my $i (@array2){ print "@$i\n"; } __END__et le mien ;-)
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -1;++$i){ push @{$array2[$i]},$array[$i],$array[$i+1]; } print "@$_\n" for(@array2); __END__et encore
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -1;++$i){ push @{$array2[$i]},@array[$i,$i+1]; } print "@$_\n" for(@array2); __END__
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
7 janv. 2008 à 20:21
7 janv. 2008 à 20:21
et pour la 2ème question
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -2;++$i){ push @{$array2[$i]},@array[$i .. $i+2]; } print "@$_\n" for(@array2); __END__
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
7 janv. 2008 à 21:25
7 janv. 2008 à 21:25
Bonsoir lami20j,
Pour la deuxième fois tu me tires une épine du pied. Je n'ai pas encore testé, mais je sais que ça fonctionnera. Je me sens redevable.
J'aurais une autre question: comment faire un tri alphabétique sur une telle structure? Par exemple en prenant le premier élément de chaque référence? J'ai essayé pas mal de choses, mais ...
Encore merci.
Pour la deuxième fois tu me tires une épine du pied. Je n'ai pas encore testé, mais je sais que ça fonctionnera. Je me sens redevable.
J'aurais une autre question: comment faire un tri alphabétique sur une telle structure? Par exemple en prenant le premier élément de chaque référence? J'ai essayé pas mal de choses, mais ...
Encore merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
7 janv. 2008 à 21:38
7 janv. 2008 à 21:38
J'ai tout testé, c'est exactement ce que je voulais.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 janv. 2008 à 00:03
8 janv. 2008 à 00:03
Voic pour le tri (avec 3 éléments par référence)
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -2;++$i){ push @{$array2[$i]},@array[$i .. $i+2]; } my @tri = map { [map {sort @$_ } $_] } @array2; print "*" x 5, " avant le tri ", "*" x 5,"\n"; print "@$_\n" for( @array2); print "*" x 5, " après le tri ", "*" x 5,"\n"; print "@$_\n" for( @tri); __END__et avec 2 éléments
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -1;++$i){ push @{$array2[$i]},@array[$i,$i+1]; } my @tri = map { [map {sort @$_ } $_] } @array2; print "*" x 5, " avant le tri ", "*" x 5,"\n"; print "@$_\n" for( @array2); print "*" x 5, " après le tri ", "*" x 5,"\n"; print "@$_\n" for( @tri); __END__
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
8 janv. 2008 à 01:21
8 janv. 2008 à 01:21
Merci! Ca à l'air un peu compliqué les map, j'ai pas encore appris.
En fait ça fait un tri, mais pas alphabétique:
2 éléments
3 éléments:
Là c'est bon. On peut inverser l'ordre?
En fait ça fait un tri, mais pas alphabétique:
2 éléments
***** après le tri ***** dormir manger boire dormir boire sortir sortir voir aller voir aller manger manger manger
3 éléments:
Là c'est bon. On peut inverser l'ordre?
***** après le tri ***** boire dormir manger boire dormir sortir boire sortir voir aller sortir voir aller manger voir aller manger manger
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 janv. 2008 à 01:36
8 janv. 2008 à 01:36
En fait ça fait un tri, mais pas alphabétique:
pourquoi?
dormir est bien avant manger
boire avant dormir
boire avant sortir
etc.
voilà pour inverser
pourquoi?
dormir est bien avant manger
boire avant dormir
boire avant sortir
etc.
voilà pour inverser
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -2;++$i){ push @{$array2[$i]},@array[$i .. $i+2]; } my @tri = map { [reverse map {sort @$_ } $_] } @array2; print "*" x 5, " avant le tri ", "*" x 5,"\n"; print "@$_\n" for( @array2); print "*" x 5, " après le tri ", "*" x 5,"\n"; print "@$_\n" for( @tri); __END__
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
8 janv. 2008 à 01:42
8 janv. 2008 à 01:42
Excuse-moi, je me suis mal exprimé. Je voulais dire en comparant le premier caractère du premier élément de chaque liste, et se baser sur ça.
Obtenir ça:
aller manger manger
aller manger voir
aller sortir voir
boire dormir manger
boire dormir sortir
boire sortir voir
Obtenir ça:
aller manger manger
aller manger voir
aller sortir voir
boire dormir manger
boire dormir sortir
boire sortir voir
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 janv. 2008 à 21:09
8 janv. 2008 à 21:09
Obtenir ça:
aller manger manger
aller manger voir
aller sortir voir
boire dormir manger
boire dormir sortir
boire sortir voir
essaie ça
aller manger manger
aller manger voir
aller sortir voir
boire dormir manger
boire dormir sortir
boire sortir voir
essaie ça
#!/usr/bin/perl use strict;use warnings; my @array = qw(manger dormir boire sortir voir aller manger manger); my @array2= (); for(my $i = 0;$i < @array -2;++$i){ push @{$array2[$i]},@array[$i .. $i+2]; } my @tri = sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] || $a->[2] cmp $b->[2] } map { [ map {sort @$_ } $_] } @array2; print "*" x 5, " avant le tri ", "*" x 5,"\n"; print "@$_\n" for( @array2); print "*" x 5, " après le tri ", "*" x 5,"\n"; print "@$_\n" for( @tri); __END__
eccomi
Messages postés
13
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
8 janv. 2008 à 21:25
8 janv. 2008 à 21:25
Merci lami20j!!
Je me suis cassé la tête, mais j'aurais jamais trouvé seul... Enfin, tout ce que tu m'indiques, je ne l'oublierai plus, et pourrais m'en reservir :)
Bonne soirée.
eccomi
Je me suis cassé la tête, mais j'aurais jamais trouvé seul... Enfin, tout ce que tu m'indiques, je ne l'oublierai plus, et pourrais m'en reservir :)
Bonne soirée.
eccomi