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++; } ...