Aprende Programación
Menú

Ejercicio: Calcular Factorial


Realizar un programa que pida un numero y calcule su factorial.



El algoritmo o programa para calcular el factorial de un número es uno de los ejercicios mas básicos que se utilizan para entender el uso y funcionamiento de las estructuras de repetición.

El factorial consiste en la multiplicación de todos los números comprendidos entre un numero en especifico hasta 1 o viceversa, por ejemplo:

El factorial del número 5 seria igual a 5*4*3*2*1 cuyo resultado es 120, y que es lo mismo que decir 1*2*3*4*5 el cual es una forma mas fácil de verlo.

Ahora bien para llevar ésta operación matemática a un algoritmo o programa, lo primero que observamos es qué la operación en sí consta de una secuencia por lo cual las estructuras de repetición o bucles serían de gran ayuda y las más ideales.

Primero vamos a definir cuantas variables vamos a usar:
  • "n" para guardar el número que introduzca el usuario.
  • "i" como variable de control o recorrido, ya que sabemos que usaremos un bucle.
  • "f" para guardar el resultado del factorial.
Así que el algoritmo va así.

0- Inicio
1- Declarar n,i,f=1;

A la variable "f" se le asigna el valor 1, ya que mas adelante ésta se multiplicará y se necesita que tenga un valor predefinido y ademas el 1 no afectará la multiplicación, al contrario si se usará el cero esté si la afectaría.

Ahora sencillamente pedimos al usuario que introduzca un número y lo guardamos.

0- Inicio
1- Declarar n,i,f=1;
2- Escribir "Introduzca un número: ";
3- Leer n;

Luego viene el bucle, recordemos que existen 3 tipos de estructuras, y queda a nuestro criterio como programadores cuál vamos a usar, en éste caso podemos ver que en el programa solo vamos a pedir le al usuario que introduzca el número una sola vez de manera que no vamos a necesitar un bucle para ésa parte, pero sí para llevar a cabo la operación.

Recordemos que hay dos formas de ver éste ejercicio:

1- La multiplicación se realiza desde el número introducido y todos sus inferiores hasta llegar a 1.

Aquí sabemos que sea cual sea el número que introduzca el usuario, la multiplicación se va a realizar hasta llegar a 1 entonces el bucle "repita Para" (for) es la mejor opción a usar, porque conocemos el limite.

Y el algoritmo quedaría así:

0- Inicio
1- Declarar n,i,f=1;
2- Escribir "Introduzca un número: ";
3- Leer n;
4- Repita Para (i=n;i>=1;i--)

Primero se le asigna a "i" el valor de "n" es decir el número que introdujo el usuario, luego se establece qué el bucle se repetirá mientras que "i" sea mayor o igual a 1, y finalmente "i" decrementará una unidad en cada repetición.

2- La multiplicación se realiza desde 1 hasta llegar al número introducido.

Aquí como no sabemos que número introducirá el usuario por consiguiente no sabemos el limite del bucle, por lo tanto pensaríamos en un bucle Mientras o Hasta, pero aún así usaremos un bucle Para ya que al analizar con más detenimiento, el bucle Mientras o Hasta no ofrecen una mayor ventaja o utilidad en este caso en especial.

Y el algoritmo quedaría así:

0- Inicio
1- Declarar n,i,f=1;
2- Escribir "Introduzca un número: ";
3- Leer n;
4- Repita Para (i=1;i<=n;i++)

Primero se le asigna a "i" el valor 1, luego se establece qué el bucle se repetirá mientras que "i" sea menor o igual al número que introdujo el usuario, y finalmente "i" incrementará una unidad en cada repetición.

Ya queda de nuestra parte elegir la forma que mejor entendamos y sea mas fácil para nosotros.

Ahora falta escribir la instrucción que se ejecutará en cada repetición. Ésta es la parte mas crucial de todo el programa junto con la elección del bucle ya que debemos usar nuestra lógica para poder hacer que funcione. Generalmente las soluciones suelen ser muy sencillas pero llegar a ellas puede ser un poco complicado.

En este caso el algoritmo quedaría así:

0- Inicio
1- Declarar n,i,f=1;
2- Escribir "Introduzca un número: ";
3- Leer n;
4- Repita Para (i=1;i<=n;i++)
    4.1- f=f*i;
5- Fin Repita Para;

Como podemos observar la instrucción es muy sencilla, en donde se multiplica el valor que posee almacenado "f" por el valor de "i" y se guarda seguidamente en "f". Aquí también se puede apreciar como a la variable de control "i" se le puede dar otro uso, y que en ejercicios mas complejos puede ser de gran ayuda.

Finalmente mostraremos un mensaje al usuario con el resultado de la operación.

0- Inicio
1- Declarar n,i,f=1;
2- Escribir "Introduzca un número: ";
3- Leer n;
4- Repita Para (i=1;i<=n;i++)
    4.1- f=f*i;
5- Fin Repita Para;
6- Escribir "El factorial del número ",n," es:",f;
7- Fin.

#include <iostream>
using namespace std;
int main(){
    int n,f=1,i;
    cout<<"Introduzca un numero: ";
    cin>>n;
    for(i=1;i<=n;i++)
    {
            f=f*i;
    }  
    cout<<"El factorial del numero "<<n<<" es: "<<f;
}