Saber si un año es bisiesto en C y C++
En esta lección vas a comprobar si un año es bisiesto según la regla del calendario gregoriano.
Introducción
En el calendario gregoriano, un año es bisiesto si es divisible entre 4, salvo los años de cambio de siglo (divisibles entre 100) que no son divisibles entre 400. Por eso el 2000 fue bisiesto, pero el 1900 no. Es un buen ejercicio para combinar varias condiciones lógicas.
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++
#include <stdio.h>
int main(void) {
int year = 2024;
// Apply the Gregorian calendar rules in one expression.
int leap = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
printf("%d is %sa leap year\n", year, leap ? "" : "not ");
}
2024 is a leap year
#include <iostream>
int main() {
int year = 2024;
// Apply the Gregorian calendar rules in one expression.
bool leap = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
std::cout << year << " is " << (leap ? "" : "not ") << "a leap year\n";
}
2024 is a leap year
Comparación entre C y C++
La expresión year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) expresa toda la regla en una sola línea. La primera parte trata los años divisibles entre 400, y la segunda, los años divisibles entre 4 que no son de cambio de siglo. El año 2024 cumple la segunda parte, así que es bisiesto.
C usa funciones procedurales pequeñas y muestra abiertamente cómo se representan los datos en memoria.
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