• Publicidad

Control de generación de números

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

Control de generación de números

Notapor BigBear » 2010-01-08 16:35 @732

Hola estoy haciendo un programa que genera números mediante una función llamada &generacion. Lo que yo quiero hacer es que este código verifique constantemente si la función &generacion no devuelve un número que sea múltiplo de 10.


Una parte del código es esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($ultimo,$carta) = &generacion;
if ($ultimo =~/0$/) {
    print "Ok , generacion exitosa\n\n\a";
    exit 1;
} else {
    print "Seguir generando........\n\n";
    &generacion;
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo que yo quiero es que si la variable $ultimo que devuelve &generacion, no es múltiplo de 10, el código siga con la función &generacion constantemente hasta que devuelva un valor múltiplo de 10 y así salir del código.

¿Pero, cómo lo haría?
Última edición por explorer el 2010-01-08 18:17 @804, editado 2 veces en total
Razón: Ortografía, bloques de código
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Control de generacion de numeros

Notapor explorer » 2010-01-08 16:49 @742

(no probado)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
do {
    ($ultimo, $carta) = generacion;
} while ($ultimo !~ /0$/);
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

Re: Control de generacion de numeros

Notapor BigBear » 2010-01-08 17:36 @775

Gracias, ahora lo intenta siempre, pero la función &generacion devuelve el mismo número siempre y nunca da el correcto. ¿Cómo hago para que se actualicen las variables?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Control de generacion de numeros

Notapor explorer » 2010-01-08 17:41 @779

Publica el código que estás usando. Y sería recomendable el código de generacion(), por si tiene algo raro.

Según he puesto el bucle, las variables se actualizan en cada llamada a la función.
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: Control de generacion de numeros

Notapor BigBear » 2010-01-08 18:14 @801

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting

do {
    ($ultimo) = &generacion;
} while ($ultimo !~ /0$/);


sub generacion {
    @myarray=(0,1,2,3,4,5,6,7,8,9);

    for (1 .. 2) {
       $x   = int rand 10;
       $re .= @myarray[$x];
    }
    print "numero $re\n";
    return $ultimo;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Cómo lo arreglo?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Control de generación de números

Notapor kidd » 2010-01-08 18:19 @805

En tu línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
return $ultimo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Debería de ser:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
return int $re;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Control de generación de números

Notapor explorer » 2010-01-08 18:25 @809

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. my $ultimo;
  7.  
  8. do {
  9.     ($ultimo) = generacion();
  10. } while ($ultimo !~ /0$/);
  11.  
  12. print "$ultimo\n";
  13.  
  14. sub generacion {
  15.     my @myarray = (0 .. 9);
  16.     my $re;
  17.  
  18.     for (1 .. 2) {
  19.        my $x = int rand @myarray;
  20.        $re .= $myarray[$x];
  21.     }
  22.  
  23.     return $re;
  24. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


De todas maneras... si lo que quieres es generar números aleatorios, de dos cifras, múltiplos de diez, se puede hacer de forma "aparente":
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. my $ultimo = int(rand(10)) . '0';
  7.  
  8. print "$ultimo\n";
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

Re: Control de generación de números

Notapor BigBear » 2010-01-08 19:01 @834

Gracias a los dos. Ahora otra duda sobre

return int $re;

¿Cómo hago para usar dos variables en el return?

porque hago return int($re,$re2); y me da error.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Control de generación de números

Notapor explorer » 2010-01-08 20:11 @883

return $re, $re2;
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: Control de generación de números

Notapor explorer » 2010-01-09 10:31 @479

int (rand 10) * 10 no devuelve números del 1 al 100, sino del 0 al 90. :)
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


Volver a Básico

¿Quién está conectado?

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