Ejercicios de C/C++ para principiantes

Calcular el factorial con un bucle en C y C++

En esta lección vas a calcular el factorial de un número con un bucle y a guardar el resultado en un tipo lo bastante grande.

Introducción

El factorial de n, escrito n!, es el producto de todos los enteros positivos de 1 a n; por ejemplo, 6! = 720. El factorial crece muy rápido, así que hace falta un tipo lo bastante grande, como unsigned long long, para evitar un desbordamiento.

Puntos importantes

  • Activa los avisos del compilador (compiler warnings) y corrígelos todos.
  • Entiende bien el tipo y la vida útil (lifetime) de cada valor.
  • Comprueba siempre los datos de entrada y los límites de los índices de los arreglos.

Ejemplos de código C y C++

C
Ejecutar →
main.c
#include <stdio.h>
int main(void) {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    printf("%d! = %llu\n", number, result);
}
Resultado de la ejecución
6! = 720
C++
Ejecutar →
main.cpp
#include <iostream>
int main() {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    std::cout << number << "! = " << result << '\n';
}
Resultado de la ejecución
6! = 720

Comparación entre C y C++

La variable result empieza en 1, así que 0! y 1! siguen siendo correctos sin ningún tratamiento especial. El bucle multiplica result uno a uno por cada número de 2 a number. El especificador %llu de printf sirve para mostrar un valor de tipo unsigned long long.

C

C usa funciones procedurales pequeñas y muestra abiertamente cómo se representan los datos en memoria.

C++

C++ sigue permitiendo trabajar a bajo nivel, pero añade tipos de biblioteca y abstracciones más seguras.

Ejercicios de práctica

Ejecuta las dos versiones y después modifica el código para ver la diferencia de seguridad que aporta cada lenguaje.

  • Prueba entradas no válidas y valores límite.
  • Compila con las opciones -Wall -Wextra -Wpedantic para activar más avisos.
  • Pon las declaraciones comunes en un archivo de cabecera y la implementación en un archivo aparte.

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos