El factorial de un número N se define como el producto de todos los números naturales (enteros positivos) menores o iguales a N, y se denota con el signo '!'. Su uso es muy importante en diversas ramas de las matemáticas, aunque es especialmente útil en combinatoria, probabilidad y análisis matemático. Por ejemplo, se puede usar para contar y agrupar elementos mediante el uso de combinaciones y permutaciones, o para obtener probabilidades de eventos.

Ejemplo: La función factorial de 5 sería 5! = 1 x 2 x 3 x 4 x 5 = 120.

Después de esta breve introducción, pasemos al código. Este programa obtiene la función factorial de un número cualquiera. El funcionamiento del programa es muy sencillo: Se pide al usuario que ingrese un número entero, el cual se guarda en la variable 'number', luego se inicializa la variable 'factorial' en 1, porque todos los números multiplicados por 1 son iguales a sí mismos, finalmente se utiliza un bucle 'for' para calcular el factorial y se imprime el resultado en pantalla. 

#include <iostream>

int main() {
    int number;
    std::cout << "Ingrese un número: ";
    std::cin >> number;
    int factorial = 1;
    for (int i = 2; i <= number; i++) {
        factorial *= i;
    }
    std::cout << "El factorial de " << number << " es " << factorial << "." << std::endl;
    return 0;
}

La condición de bucle 'for' sigue la siguiente lógica: 

1.- La variable 'i' comienza en 2, porque no es necesario multiplicar un número por 1.

2.- Sí í es menor o igual al número ingresado 'number', se ejecuta la expresión: 'factorial *= i', que se traduce como factorial = factorial x i. 

3.- Al finalizar el bucle activo, el operador de incremento 'i++' suma un 1 a la variable 'i' 

4.- Comienza nuevamente el ciclo hasta que la condición ya no se cumpla.

El código ha sido probado en Code::Blocks en Windows, por lo que es completamente funcional.

Puedes descargar el código .CPP aquí.

NOTA: Si al correr el programa los acentos o caracteres especiales no se muestran correctamente, puedes usar esta solución: ¿Cómo mostrar acentos y caracteres especiales en programas escritos en C++?