• Viernes 29 de Marzo de 2024, 08:40

Autor Tema:  Algun Experto En Perl Y Alma Caritativa ??  (Leído 3068 veces)

guarida2

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Algun Experto En Perl Y Alma Caritativa ??
« en: Jueves 16 de Diciembre de 2004, 00:15 »
0
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.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Algun Experto En Perl Y Alma Caritativa ??
« Respuesta #1 en: Jueves 30 de Diciembre de 2004, 02:19 »
0
;)  Este foro no es para hacer tabajos o tareas.
* Es para responder dudas!
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

explorer

  • Miembro activo
  • **
  • Mensajes: 68
    • Ver Perfil
Re: Algun Experto En Perl Y Alma Caritativa ??
« Respuesta #2 en: Domingo 9 de Julio de 2006, 02:30 »
0
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...