miss iingen 2011

Transcription

miss iingen 2011
Exercice Tableaux
Concours Miss IINGEN 2011
MISS IINGEN 2011
Il s'agit de trouver la gagnante dans le concours Miss IINGEN
2011
Il y a N belles candidates qui ont obtenu un certain nb de points
dans les notes physiques et de connaissances.
Il s'agit de Lire les données des candidates et de generer un
rapport adéquat
Miss IINGEN 2011
Numero : entier
Age > 18
Taille : cms
Poitrine cms
Ceinture : cms
Hanches : cms
Note physique : 0-10
Linguistique 0-10
Statistique 0-10
Programmation Perl 0-10
Note connaissances ( Math + Stat + Perl ) / 3
NOTE FINALE = (Physique + Connaissances )/2
Miss IINGEN 2011
Reporte simple:
Numero candidata Nota Fisica Nota Conoc Nota Final
123
5
...
10
5
5
9
7.5
7
Miss STID 2011
CREACION DEL ARCHIVO (UNIX)
$ cat > miss.txt
#num edad estatura busto cintura cadera fisico ling est perl
123;19;165;90;60;90;10;10;9;10
11;21;168;92;60;95;8;7;6;10
101;20;169;88;65;81;6;5;6;7
^d
$
SI NO, CREAR EL ARCHIVO CON UN EDITOR DE TEXTO
(WINDOWS)
Miss STID 2011
# Miss IINGEN version 1
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe"; # Abrir al archivo
while(my $ligne=<MISS>) { # Leer cada linea
print $ligne ;
#Imprimirla
}
Miss STID 2011
$ perl miss.perl
#num edad estatura busto cintura cadera fisico ling est perl
123;19;165;90;60;90;10;10;9;10
11;21;168;92;60;95;8;7;6;10
101;20;169;88;65;81;6;5;6;7
$
CUIDADO CON LOS FIN DE LINEA \n !!! SON CARACTERES
Miss STID 2011
# Miss IINGEN version 2
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe";
while(my $ligne=<MISS>) {
chomp $ligne ; # eliminar los \n
my @linea = split(/;/,$ligne);
print @linea;
}
Miss STID 2011
$ perl miss.perl
#num edad estatura busto cintura cadera fisico ling est perl
123191659060901010910112116892609587610101201698865816567
$
What happening ? Qu'est-ce qui s'est passé ? Qué paso ?
Miss STID 2011
# Miss IINGEN version 3
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe";
while(my $ligne=<MISS>) {
chomp $ligne ; # eliminar los \n
my @linea = split(/;/,$ligne);
print @linea, "\n";
}
Miss STID 2011
$ perl miss.perl
#num edad estatura busto cintura cadera fisico ling est perl
123191659060901010910
112116892609587610
101201698865816567
$
Un peu mieux ! Un poco mejor
Miss STID 2011
# Miss IINGEN version 4
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe";
while(my $ligne=<MISS>) {
chomp $ligne;
# Eliminar \n de cada fin de linea
my @linea = split(/;/,$ligne);
my $nota = ( $linea[7]+$linea[8]+$linea[9] )/ 3;
my $nota_final = ( $nota + $linea[6])/ 2;
print $nota," ",$nota_final,"\n";
}
Miss STID 2011
$ perl miss.perl
10 10
7.66666666666667 7.83333333333333
6 7.5
$
Nota y Nota final CALCULADAS
Miss STID 2011
123;19;165;90;60;90;10;10;9;10
11;21;168;92;60;95;8;7;6;10
101;20;169;88;65;81;6;5;6;7
$ perl miss.perl
10 10
7.66666666666667 7.83333333333333
6 7.5
$
Nota y Nota final CALCULADAS
Miss STID 2011
# Miss IINGEN version 5
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe";
while(my $ligne=<MISS>) {
chomp $ligne;
# Eliminar \n de cada fin de linea
my @linea = split(/;/,$ligne);
my $nota = ( $linea[7]+$linea[8]+$linea[9] )/ 3;
my $nota_final = ( $nota + $linea[6])/ 2;
# Imprimir Num candidata, nota_fisico, nota_conoc, nota_final
print $linea[0]," ",$linea[6]," ",$nota," ",$nota_final,"\n";
}
Miss STID 2011
123;19;165;90;60;90;10;10;9;10
11;21;168;92;60;95;8;7;6;10
101;20;169;88;65;81;6;5;6;7
$ perl miss.perl
123 10 10 10
11 8 7.66666666666667 7.83333333333333
101 9 6 7.5
$
Candidata, Nota fisica, Nota conocimientos y Nota final
CALCULADAS
Miss STID 2011
# Miss IINGEN version 6
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe";
print "Numero\tFisico\tConoc\tNota\n";
while(my $ligne=<MISS>) {
chomp $ligne;
# Eliminar \n de cada fin de linea
my @linea = split(/;/,$ligne);
my $nota = ( $linea[7]+$linea[8]+$linea[9] )/ 3;
my $nota_final = ( $nota + $linea[6])/ 2;
# Imprimir Num candidata, nota_fisico, nota_conoc, nota_final
print $linea[0],"\t",$linea[6],"\t",$nota,"\t",$nota_final,"\n";
}
Miss STID 2011
123;19;165;90;60;90;10;10;9;10
11;21;168;92;60;95;8;7;6;10
101;20;169;88;65;81;6;5;6;7
$ perl miss.perl
Numero Fisico ConocNota
123
10
10
10
118
7.66666666666667 7.83333333333333
101
9
6
7.5
$
Candidata, Nota fisica, Nota conocimientos y Nota final
CALCULADAS con encabezado
Miss STID 2011
# Miss IINGEN version 7
use strict;
Juan-Manuel Torres
open(MISS,"miss.txt") or die "No existe";
print "Numero\tFisico\tConoc\tNota\n";
while(my $ligne=<MISS>) {
chomp $ligne;
# Eliminar \n de cada fin de linea
my @linea = split(/;/,$ligne);
my $nota = ( $linea[7]+$linea[8]+$linea[9] )/ 3;
my $nota_final = ( $nota + $linea[6])/ 2;
# Imprimir Num candidata, nota_fisico, nota_conoc, nota_final
printf "%2d\t%2d\t%5.2f\t%5.2f\n", $linea[0],$linea[6],$nota,$nota_final;
}
Miss STID 2011
$ perl miss.perl
Numero Fisico
123
10
11
8
101
9
$
Conoc
10.00
7.67
6.00
123;19;165;90;60;90;10;10;9;10
11;21;168;92;60;95;8;7;6;10
101;20;169;88;65;81;6;5;6;7
Nota
10.00
7.83
7.50
Candidata, Nota fisica, Nota conocimientos y Nota final
CALCULADAS con encabezado, formato y espacios
Miss STID 2009
TAREA :
Qué es necesario para lograr este reporte ?
*** MISS STID 2009 ***
La candidate gagnante est la Num _________, avec une note
finale de _____ points ( ___ physique et ___ connaissances).
La fille la plus petite mesure ____ cms. Celle avec les
hanches les plus grandes est la Num ____ car elle mesure
____ cms. La candidate qui pleure est la Num. Elle a eu
uniquement _____ points.
La moyenne du poids est de _____Kg
Exercice boucles
Suite de FIbonacci
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,...
Suite de Fibonacci
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,...
Suite de Fibonacci
Écrire un algorithme qui calcule la valeur u et le rang k du premier
terme de la suite de Fibonacci
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,...
Fib0=0 Fib1=1 ; Fib(n) = Fib(n-1)+Fib(N-2)
Suite de Fibonacci
$n = 10;
$a = 0; $b = 1; $sum=0;
for ($i=0;$i<$n;$i++){
printf "%d\n", $a;
$sum = $a + $b;
$a = $b;
$b = $sum;
}
Suite de FIbonacci
Modificar para hacer una N variable leida del teclado...
Suite de FIbonacci
$n = <>;
# VOILA!!!
$a = 0; $b = 1; $sum=0;
for ($i=0;$i<$n;$i++){
printf "%d\n", $a;
$sum = $a + $b;
$a = $b;
$b = $sum;
}
Permutacion circular
On a un tableau de fruits, par exemple :
@fruits = (“melon”, “fraise”, “cerise”, “mangue”, “kiwi”) ;
On veut faitre une permutation circulaire des elements afin
d'obtenir et afficher:
@fruits = (“fraise”, “cerise”, “mangue”, “kiwi”, “melon”) ;
Ecrire un programme perl permute.pl qui va lire du clavier les
elements, puis les permuter circulairement
Permutacion circular: solucion 1
#!usr/bin/perl
@fruits = ("melon","fraise","cerise",”mangue”, "kiwi");
print "tableau avant la permutation\n";
foreach $f (@fruits) { print $f." "; }; print "\n"; # passer a la ligne
$primer = $fruits[0];
# Savegarder le 1er element
for($i=0; $i< $#fruits ; $i++) { # permutation de 0 a N-1 elements
$fruits[$i] = $fruits[$i+1]; }
$fruits[$#fruits] = $primer; # Poner en ultimo element N el primero
foreach $f (@fruits) { # Afficher le tableau avec des espaces
print $f." "; }; print "\n"; # passer a la ligne
Permutacion circular: solucion 2
#!usr/bin/perl
@fruits = ("melon","fraise","cerise",”mangue”, "kiwi");
print "tableau avant la permutation\n";
foreach $f (@fruits) { print $f." "; }; print "\n"; # passer a la ligne
$primero = shift @fruits; # Savegarder le 1er element
push (@fruits, $primero) ; # Poner en ultimo element el primero
foreach $f (@fruits) { # Afficher le tableau avec des espaces
print $f." "; }; print "\n"; # passer a la ligne
Segmentar un texto en frases: solucion « naive »
QUE ES UNA FRASE?
Conjunto de palabras (caracteres: alfanumericos+puntuacion) separados por
blancos y terminados por . o ?
ES SIEMPRE CIERTO??
El banco gano $ 1'000,000.00 en un dia.
El presidente dijo « No me ire del poder... al menos no por ahora! » y el pueblo
se indigno.
Segmentar un texto en frases: solucion « naive »
Supongamos la solucion “naive“
SERAN NECESARIAS 3 TAREAS:
1. LEER EL TEXTO
2. NORMALIZAR EL TEXTO (MINIMAMENTE)
3 SEGMENTAR EL TEXTO E IMPRIMIR LAS FRASES
Segmentar un texto en frases: solucion « naive »
PRIMERA TAREA: LEER EL TEXTO (ENTRADA ESTANDAR)
#!usr/bin/perl
$texte = "";
while(my $s=<>) {
chomp $s;
$texte .= $s
}
...
Segmentar un texto en frases: solucion « naive »
SEGUNDA TAREA: NORMALIZAR EL TEXTO
ELIMINAR SALTOS DE LINEA Y ELIMINAR ESPACIOS INNCESARIOS
...
$texte =~ s/\n/ /g;
$texte =~ s/ +/ /g;
print $texte;
...
Segmentar un texto en frases: solucion « naive »
TERCERA TAREA: SEGMENTAR EN FRASES E IMPRIMIR
...
print "\n SEGMENTAR EN FRASES\n";
@phrases = split(/[\.\?]/,$texte);
my $n=0;
foreach my $phrase (@phrases) {
print $n," ",$phrase."\n";
$n++;
}
...

Documents pareils