#!/usr/bin/perl use strict; use warnings; use Carp (); local $SIG{__WARN__} = \&Carp::cluck; sub affiche { # $_ est un élément du tableau print "$_ " foreach (@_); print "\n"; } sub afficheRef { my ($ref) = @_; print "$_ " foreach(@$ref); print "\n"; } sub somme { my $somme = 0; $somme += $_ foreach (@_); return $somme; } sub min { my ($min) = @_; foreach (@_) { $min = $_ if $_ < $min; } return $min; } sub existe { my ($find, @items) = @_; foreach (@items) { return 1 if $_ == $find; } return 0; } sub sommePairs { my $somme = 0; foreach (@_) { $somme += $_ if $_%2 == 0; } return $somme; } sub estTrie { for (my $i = 0 ; $i < @_ - 1 ; $i++) { return 0 if $_[$i] > $_[$i + 1]; } return 1; } sub permutation { my ($t) = @_; # @$t est la taille du tableau # $t->[$i] est l'élément d'indice $i my $temp = $t->[@$t - 1]; for (my $i = @$t - 1 ; $i > 0 ; $i--) { $t->[$i] = $t->[$i - 1]; } $t->[0] = $temp; } sub miroir { my ($t) = @_; my $i = 0; my $j = @$t - 1; while ($i < $j) { my $temp = $t->[$i]; $t->[$i] = $t->[$j]; $t->[$j] = $temp; $i++; $j--; } } my @t = (8..10, 7, 23..50); affiche ("@t = (8..10, 7, 23..50) = "); # On passe en paramètre l'adresse du tableau afficheRef (\@t); print (somme @t); print (" = 1056\n"); print (min @t); print (" = 7\n"); print (existe 6, @t); print (" = false\n"); print (existe 24, @t); print (" = true\n"); print (sommePairs @t); print (" = 536\n"); print (estTrie @t); print (" = false\n"); print (estTrie (5..79)); print (" = true\n"); my @q = (1..15); affiche ("@q = (1..15)"); permutation (\@q); affiche ("@q = (15, 1..14)"); miroir (\@q); affiche ("@q = (14..1, 15)");