[ Foro de C# ]

Duda - Programa que utiliza ciclo para calcular factorial

04-May-2016 03:32
Invitado (Juan Camilo)
1 Respuestas

Buenas noches a todos, se me ha puesto como trabajo realizar un programa en C# que calcule el factorial de cualquier número. El código que resulté escribiendo fue este:

{
int factorial, numero, valor;
numero=Convert.ToInt32(Microsoft.VisualBasic.Interaction.InputBox("Ingrese el número"));
if(numero==0 || numero==1)
{MessageBox.Show(" El resultado es: 1");}
else{
do{
valor=numero-1;
factorial=(numero)*(valor);

}while(valor>1);

MessageBox.Show("El resultado es: " + Convert.ToString(factorial));



}
}

Lamentablemente, a la hora de digitar un número en la caja de texto de MicrosoftVisualBasic, se cierra la ventana y el programa deja de responder.
Podrían decirme si algo está mal en el código?
Gracias de antemano.


04-May-2016 11:56
Invitado (Caranim)

La variable "numero" no se modifica en ningún momento y "valor" siempre vale en el bucle "numero-1". Por eso el único caso en que se saldría del bucle sería que el valor introducido por el usuario fuese un "2".
En "factorial" tampoco va a variar el valor a lo largo de la ejecución, ya que siempre es "numero*valor" y ya hemos visto que ninguno de los dos se modifica.

Cambia el bucle por esto:
factorial = 1; ' Inicializas la variable para que no tenga valores "basura".
do
               {
                   factorial *= numero;
                   numero--;
               } while (numero > 1);

y debería de funcionar.

Espero que te sirva.

Saludos.

Caranim.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)