• Publicidad

Programa que cuente las veces que se repite un nombre

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Programa que cuente las veces que se repite un nombre

Notapor carlosjrf88 » 2012-04-16 13:46 @615

Ya he arreglado lo de los nombres y me salen bien. La verdad es que no tengo ni idea de cómo unir ambos programas, el de nombres aleatorios y el de contar, si me pudieras dar alguna pista sería de mucha ayuda.
carlosjrf88
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-04-14 12:30 @563

Publicidad

Re: Programa que cuente las veces que se repite un nombre

Notapor explorer » 2012-04-16 14:44 @655

Sencillísimo... se juntan los dos códigos en un mismo sitio, y se quitan las líneas que sobran.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. my @caracteres = (
  3.     'Rodriguez-Fernandez',
  4.     'Carlos Baena-Rey',
  5.     'Alfredo Sanchez-Pelaez',
  6.     'Rafael Rodriguez-Sanchez',
  7.     'Benjamin Navas-Lopez',
  8.     'Juan'
  9. );
  10.  
  11. my $cuantas_veces_sale;
  12. for (0 .. 21) {                                       # 22 veces
  13.     $rand = int rand(@caracteres);                    # elegimos uno al azar
  14.     $cuantas_veces_sale{ $caracteres[$rand] }++;      # le contamos una aparición más
  15. }
  16.  
  17. for my $nombre (sort keys %cuantas_veces_sale) {      # Para cada uno de los encontrados, ordenados
  18.     print "$nombre = $cuantas_veces_sale{$nombre}\n"; # lo sacamos en pantalla
  19. }
  20.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Programa que cuente las veces que se repite un nombre

Notapor carlosjrf88 » 2012-04-18 03:07 @172

Muchas gracias, ya tengo arreglado eso. Ahora tengo que hacer lo mismo pero para datos leídos desde entrada estándar. Este es mi programa, pero no me sale bien:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3.  
  4. my %cuantas_veces_sale;
  5.  
  6. print "Rodriguez Martin, Carlos";
  7. chop($nombre=<STDIN>);
  8. print "Gonzalez Blanco, Raul";
  9. chop($nombre=<STDIN>);
  10. print "Martin Martin, Juan";
  11. chop($nombre=<STDIN>);
  12. print "Gonzalez Blanco, Raul";
  13. chop($nombre=<STDIN>);
  14. print "Baena Rey, Alfredo";
  15. chop($nombre=<STDIN>);
  16. print "Martin Martin, Juan";
  17. chop($nombre=<STDIN>);
  18. print "Gonzalez Blanco, Raul";
  19. chop($nombre=<STDIN>);
  20. print "Rodriguez Martin, Carlos";
  21. chop($nombre=<STDIN>);
  22. print "Ruiz Leon, Maria";
  23. chop($nombre=<STDIN>);
  24. print "Navas Lopez, Juan";
  25. chop($nombre=<STDIN>);
  26. print "Rodriguez Martin, Carlos";
  27. chop($nombre=<STDIN>);
  28. print "Ruiz Leon, Maria";
  29. chop($nombre=<STDIN>);
  30. print "Martin Martin, Juan";
  31. chop($nombre=<STDIN>);
  32. print "Gonzalez Blanco, Raul";
  33. chop($nombre=<STDIN>);
  34. print "Perez Alvarez, Juan";
  35. chop($nombre=<STDIN>);
  36. print "Aguado Lopez, Benito";
  37. chop($nombre=<STDIN>);
  38. print "Ruiz Leon, Maria";
  39. chop($nombre=<STDIN>);
  40. print "Carmona Rodriguez, Maria";
  41. chop($nombre=<STDIN>);
  42.  
  43. @datos=($nombre);
  44. print EJEMP @datos;
  45.  
  46. my $cuantas_veces_sale;
  47. for (@datos) {
  48.  $cuantas_veces_sale{ $datos[$nombre] }++;
  49. }
  50.  
  51. for my $nombre (sort keys %cuantas_veces_sale) {
  52. print "$nombre = $cuantas_veces_sale{$nombre}\n";
  53. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
carlosjrf88
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-04-14 12:30 @563

Re: Programa que cuente las veces que se repite un nombre

Notapor explorer » 2012-04-18 03:45 @197

No hace falta dar tantas vueltas... repites muchas líneas... y me parece que no has pensado lo que hace cada una... Por ejemplo... en la línea 7 lees un nombre y lo guardas en $nombre, pero ese valor se pierde en la línea 9. Y así con todas las demás.

La solución pasa por meter las sentencias de lectura desde el teclado en un bucle, que se ejecuta hasta que el usuario meta un valor especial. Y en el mismo bucle haces la estadística.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Programa que cuente las veces que se repite un nombre

Notapor carlosjrf88 » 2012-04-19 12:14 @551

Entiendo lo que dices que repito los valores y se pierden en las siguientes líneas, pero no sé qué bucle meter para que me salga en la estadística. Llevo toda la tarde liado y por más que pruebo no encuentro solución. Soy muy torpe en esto de la programación y Perl.
carlosjrf88
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-04-14 12:30 @563

Re: Programa que cuente las veces que se repite un nombre

Notapor explorer » 2012-04-19 13:47 @616

Si no sabes algo de la sintaxis de Perl, pues nos preguntamos, que para eso estamos. Perl cuenta con una amplísima documentación, la mitad de ella ya casi traducida.

Si tienes problema con la informática en general, hay abundante información en Internet. Métodos, algoritmos, patrones de desarrollo...

Lo que no puedes es esperar a que alguien te resuelva siempre los problemas.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. for ( 1 .. 18 ) {
  4.     $nombre = <>;
  5.     chomp $nombre;
  6.     push @datos, $nombre;
  7. }
  8.  
  9. my %cuantas_veces_sale;
  10. for $dato ( @datos ) {
  11.     $cuantas_veces_sale{ $dato }++;
  12. }
  13.  
  14. for $nombre ( sort keys %cuantas_veces_sale ) {
  15.     print "$nombre = $cuantas_veces_sale{$nombre}\n";
  16. }
  17.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados