• Publicidad

Cálculo del factorial

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

Cálculo del factorial

Notapor mparrado8 » 2013-04-13 17:21 @765

¡Hola! El objetivo de mi programa es calcular n! y pensando, tras entrar en numerosos bucles infinitos he llegado a elaborar un un programa que para mi está bien y se ejecuta pero que resulta que no funciona como tiene que hacerlo y en la pantalla no muestra el resultado. ¿Podéis darme alguna sugerencia o ayudarme a buscar el error?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Introduce un número\n";
  2. $a = <STDIN>;
  3. chomp($a);
  4.  
  5. while ( $n > 1 ) {
  6.     if ( ( $a == 0 ) && ( $a == 1 ) ) {
  7.         print "El factorial del numero es 1";
  8.     }
  9.     do {
  10.         $temp = $a;
  11.         $n    = $temp;
  12.         $fac == $a * $n;
  13.         $a--;
  14.         } until ( $n == 1 )
  15.  
  16. }
  17. print "El factorial de $a! es $fac";
  18.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2013-04-13 17:34 @773, editado 1 vez en total
Razón: Formateado de código con Perltidy
mparrado8
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2013-04-10 12:58 @582

Publicidad

Re: Cálculo del factorial

Notapor explorer » 2013-04-13 17:38 @776

Yo lo que veo es que estás usando un operador de comparación numérica ('==') en lugar de una asignación ('=') en la línea 12.

Y que en la primera vuelta, quieres hacer

$fac = $a * $n;

que en realidad es

$fac = $a * $temp;

que a su vez es

$fac = $a * $a;

y eso no es correcto según la definición de factorial.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cálculo del factorial

Notapor mparrado8 » 2013-04-13 17:46 @782

Lo primero, ¡entendido! ¡Ah! y lo otro creo que también, me confundí porque sería $temp = $a; $n = $temp -1; y luego ya podría hallar $fact, ¿no? y restarle a la variable $a una unidad en cada vuelta. ¿Eso sería correcto?
mparrado8
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2013-04-10 12:58 @582

Re: Cálculo del factorial

Notapor mparrado8 » 2013-04-13 17:55 @788

He hecho alguna correción, pero aún no sirve

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Introduce un numero\n";
  2. $a= <STDIN>;
  3. chomp ($a);
  4.  
  5. while ($n > 1) {
  6.         if (($a == 0) && ($a == 1))
  7.         {
  8.         print "El factorial del numero es 1";
  9.         }
  10.         until ($n == 1){
  11.                 if ($n > 1){
  12.                 $temp = $a - 1;
  13.                 $n = $temp;
  14.                 $fac = $a*$temp;
  15.                 $a = $a - 1;
  16.                 }
  17.                 $a--;
  18.                 }
  19. }
  20. print "El factorial de $a! es $fac ";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
mparrado8
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2013-04-10 12:58 @582

Re: Cálculo del factorial

Notapor explorer » 2013-04-13 22:34 @982

Cuando el programa llega a la línea 5, ¿cuánto vale $n?

A la hora de hacer programas, debes ponerte en el papel del ordenador... e intentar reproducir mentalmente o en un papel, qué es lo que va a hacer, paso a paso.

Toma un papel, y escribe en una línea todas las variables que tienes. Luego, empieza por la primera línea del programa, y comienza a dar valores a las variables o a modificarlas, según lo que digan las líneas, escribiendo los valores debajo de cada variable.

Así sabrás qué está pasando.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
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 1 invitado

cron