SoloCodigo

Programación Web y Scripting => Perl => Mensaje iniciado por: guarida2 en Jueves 16 de Diciembre de 2004, 00:15

Título: Algun Experto En Perl Y Alma Caritativa ??
Publicado por: guarida2 en Jueves 16 de Diciembre de 2004, 00:15
Son unos problemas que necesito urgentemente:

1. Un fichero contiene lineas con 2 o mas numeros en cada una de ellas, separados por 1 o varios espacios.
      Leer el fichero e imprimir en pantalla:
          - la suma de los numeros de cada linea.
          - El numero de numeros de cada linea

2. Un fichero contiene lineas con un numero en cada una de ellas. Se pide leer el fichero e imprimir:
          - Los numeros en orden ascendente
          - Idem orden descendente
          - La suma de todos los numeros
          - El numero de lineas del fichero.
Título: Re: Algun Experto En Perl Y Alma Caritativa ??
Publicado por: su - en Jueves 30 de Diciembre de 2004, 02:19
;)  Este foro no es para hacer tabajos o tareas.
* Es para responder dudas!
Título: Re: Algun Experto En Perl Y Alma Caritativa ??
Publicado por: explorer en Domingo 9 de Julio de 2006, 02:30
Como ha pasado bastante tiempo, se puede resolver...

Sea el fichero kk.txt
Citar
23 0
21 34 4566
3 5 3
3 3 3 3 3 3 3
2 3
luego la siguiente una-línea saca el primer ejercicio:
Código: Text
  1. perl -nle '$n=$s=0;while(/(\d+)/g){ $s += $1; $n++} print "Suma: $s. Números: $n"' kk.txt
  2.  
Salida:
Citar
Suma: 23. Números: 2
Suma: 4621. Números: 3
Suma: 11. Números: 3
Suma: 21. Números: 7
Suma: 5. Números: 2

Para el segundo ejercicio. Si tenemos el fichero kk.txt
Citar
23
21
3
6
2
luego la siguiente una-línea saca el segundo ejercicio:
Código: Text
  1. perl -nle '$numero[$numero++]=$_; $suma+=$_; END{@ordenados= sort {$a <=> $b} @numero; print "@ordenados"; @ordenados=reverse @ordenados; print "@ordenados"; print $suma; print $numero}' kk.txt
  2.  
Salida:
Citar
2 3 6 21 23
23 21 6 3 2
55
5
Queda para el alumno la tarea de explicarle al profesor cómo funcionan estas soluciones...