Manipulation de tableau avec PERL
Résolu
CaP
-
CaP -
CaP -
Bonjour,
J'apprends à utiliser PERL et dans le cadre du cours je bloque sur un exercice à réaliser. A partir d'un fichier texte comme ci-dessous, il s'agit d'écrire un script qui calcule la moyenne des recettes (en colonne 2) par beau temps (en colonne 3) ainsi que par mauvais temps. Le résultat attendu est présenté ci-dessous. J'ai commencé mon script en voulant initialiser le tableau et compter le nombre de jours beau, mais je n'y arrive pas. Comme ceci:
use strict;
use warnings;
open (SOURCE,"$ARGV[0]")
or die ("Impossible d'ouvrir le fichier $ARGV[0]");
# initialise le tableau et compte le nombre de beaux jours
my @tab = <SOURCE>;
my $nbrej_beau = 0;
while (my $ligne = <SOURCE> ) {
chomp $ligne;
my @tab = split (/ \t / ,$ligne);
if ($tab[2] eq "beau") {
$nbrej_beau++;
}
}
print "Nbre de beaux jours: " . $nbrej_beau . "\n";
close (SOURCE);
texte
me 01/02 790 beau
je 02/02 1024 beau
ve 03/02 650 mauvais
sa 04/02 120 beau
lu 06/02 439 mauvais
ma 07/02 370 beau
me 08/02 930 beau
résultat attendu
C:\perl> perl influence_meteo.pl fevrier.txt
Moyenne par beau temps : 646.8
Moyenne par mauvais temps : 544.5
Différence : 102.3
Merci pour toute réponse qui pourrait m'aider.
CaP
J'apprends à utiliser PERL et dans le cadre du cours je bloque sur un exercice à réaliser. A partir d'un fichier texte comme ci-dessous, il s'agit d'écrire un script qui calcule la moyenne des recettes (en colonne 2) par beau temps (en colonne 3) ainsi que par mauvais temps. Le résultat attendu est présenté ci-dessous. J'ai commencé mon script en voulant initialiser le tableau et compter le nombre de jours beau, mais je n'y arrive pas. Comme ceci:
use strict;
use warnings;
open (SOURCE,"$ARGV[0]")
or die ("Impossible d'ouvrir le fichier $ARGV[0]");
# initialise le tableau et compte le nombre de beaux jours
my @tab = <SOURCE>;
my $nbrej_beau = 0;
while (my $ligne = <SOURCE> ) {
chomp $ligne;
my @tab = split (/ \t / ,$ligne);
if ($tab[2] eq "beau") {
$nbrej_beau++;
}
}
print "Nbre de beaux jours: " . $nbrej_beau . "\n";
close (SOURCE);
texte
me 01/02 790 beau
je 02/02 1024 beau
ve 03/02 650 mauvais
sa 04/02 120 beau
lu 06/02 439 mauvais
ma 07/02 370 beau
me 08/02 930 beau
résultat attendu
C:\perl> perl influence_meteo.pl fevrier.txt
Moyenne par beau temps : 646.8
Moyenne par mauvais temps : 544.5
Différence : 102.3
Merci pour toute réponse qui pourrait m'aider.
CaP
A voir également:
- Manipulation de tableau avec PERL
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
TMTOWTDI@ubuntu:~$ cat text
me 01/02 790 beau
je 02/02 1024 beau
ve 03/02 650 mauvais
sa 04/02 120 beau
lu 06/02 439 mauvais
ma 07/02 370 beau
me 08/02 930 beau
TMTOWTDI@ubuntu:~$ cat moyenne_des_recettes.pl
#!/usr/bin/perl
use strict;use warnings;
my (%h,%c);
open F,"text" or die "E/S: $!\n";
while(<F>){
next unless /.*\s+(\d+)\s+(beau|mauvais)/;
$h{$2}+=$1;
$c{$2}++;
}
print "Moyenne par $_ temps : ",$h{$_}/$c{$_},"\n" for keys %h;
__END__
TMTOWTDI@ubuntu:~$ perl moyenne_des_recettes.pl
Moyenne par mauvais temps : 544.5
Moyenne par beau temps : 646.8
me 01/02 790 beau
je 02/02 1024 beau
ve 03/02 650 mauvais
sa 04/02 120 beau
lu 06/02 439 mauvais
ma 07/02 370 beau
me 08/02 930 beau
TMTOWTDI@ubuntu:~$ cat moyenne_des_recettes.pl
#!/usr/bin/perl
use strict;use warnings;
my (%h,%c);
open F,"text" or die "E/S: $!\n";
while(<F>){
next unless /.*\s+(\d+)\s+(beau|mauvais)/;
$h{$2}+=$1;
$c{$2}++;
}
print "Moyenne par $_ temps : ",$h{$_}/$c{$_},"\n" for keys %h;
__END__
TMTOWTDI@ubuntu:~$ perl moyenne_des_recettes.pl
Moyenne par mauvais temps : 544.5
Moyenne par beau temps : 646.8
CaP
Bien merci!