Está en la página 1de 3

Algoritmo bisiesto (formula y calculo)

Un ao es bisiesto si es divisible por 4, excepto aquellos divisibles por 100 pero


no por 400.

En programacin, el algoritmo para calcular si un ao es bisiesto es un


algoritmo til para la realizacin de calendarios.

En lgica proposicional se resolvera del siguiente modo. Sea:

p: Es divisible entre 4
q: Es divisible entre 100
r: Es divisible entre 400

La frmula lgica que indica si un ao es bisiesto sera [p y q] [r]

Es decir los aos que sean divisibles por 4 sern bisiestos; aunque no sern
bisiestos si son divisibles entre 100 (como los aos 1700, 1800, 1900 y 2100) a
no ser que sean divisibles por 400 (como los aos 1600, 2000 2400). En 400
aos debe haber 97 aos bisiestos, de esa manera el ao del calendario
gregoriano se mantiene muy parecido al ao solar. As el ao gregoriano dura
365 das +1/4 -1/100 +1/400 = 365,2425 das (ms que el ao trpico que dura
365,2422 das).

Lenguaje de Programacin

Mtodo programado en C#

bool anioBisiesto(int year) {


return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

Mtodo programado en PHP

$hoy = getdate(); // Generamos el arreglo con la fecha actual


$inicio = getdate(mktime(0,0,0,$hoy[mon],1,$hoy[year])); // Generamos el
arreglo con el primer da del mes
if(($inicio[year]%4==0 && $inicio[year]%100!=0 )|| $inicio[year]%400==0)
//evaluamos
{
return true; // devolvemos si es verdadero
}

Mtodo programado en Delphi 5. Sea A una variable Integer = Ao a analizar.


Sea B una variable Booleana cuyo valor True=Bisiesto, False=No bisiesto.

If A mod 4=0 then


If A mod 100=0 then
If A mod 400=0 then B:=True
else B:=False
else B:=True
else B:=False

Como todo lenguaje de programacin de alto nivel, Delphi tiene una funcin
para resolver lo anterior: IsLeapYear(A), que es una funcin Booleana cuyo
valor True=Bisiesto, False=No bisiesto.

Mtodo programando en C++

#include <iostream> //cargamos librera

using namespace std; //Para no tener que escribir a cada rato std

int main()
{
int bisiesto; //declaramos la variable bisiesto
cout<<"Ingrese el ao a consultar"<<endl; //Desplegamos en pantalla Ingrese el
ao a consultar
cin>> bisiesto; //Pedimos la variable bisiesto por teclado al
usuario
if((bisiesto%4==0 && bisiesto%100 != 0) || bisiesto%400==0) //Vemos si el
ao es bisiesto
{
cout<<"Es bisiesto"<<endl; //Desplegamos en pantalla es bisiesto
}
else //Si la condicional anterior es falsa entonces el ao
no es bisiesto
{
cout<<"No es bisiesto"<<endl; //Desplegamos en pantalla no es bisiesto
}
return 0; //retornamos 0 para saber que el programa termino
correctamente
}

Diagrama de flujo

También podría gustarte