Download Algoritmo bisiesto (formula y calculo)
Document related concepts
Transcript
Algoritmo bisiesto (formula y calculo) Un año es bisiesto si es divisible por 4, excepto aquellos divisibles por 100 pero no por 400. En programación, el algoritmo para calcular si un año es bisiesto es un algoritmo útil para la realización de calendarios. En lógica proposicional se resolvería del siguiente modo. Sea: p: Es divisible entre 4 q: Es divisible entre 100 r: Es divisible entre 400 La fórmula lógica que indica si un año es bisiesto sería [p y ¬q] ó [r] Es decir los años que sean divisibles por 4 serán bisiestos; aunque no serán bisiestos si son divisibles entre 100 (como los años 1700, 1800, 1900 y 2100) a no ser que sean divisibles por 400 (como los años 1600, 2000 ó 2400). En 400 años debe haber 97 años bisiestos, de esa manera el año del calendario gregoriano se mantiene muy parecido al año solar. Así el año gregoriano dura 365 días +1/4 -1/100 +1/400 = 365,2425 días (más que el año trópico que dura 365,2422 días). Lenguaje de Programación Método programado en C# bool anioBisiesto(int year) { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } Método 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 día del mes if(($inicio[year]%4==0 && $inicio[year]%100!=0 )|| $inicio[year]%400==0) //evaluamos { return true; // devolvemos si es verdadero } Método programado en Delphi 5. Sea A una variable Integer = Año 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 programación de alto nivel, Delphi tiene una función para resolver lo anterior: IsLeapYear(A), que es una función Booleana cuyo valor True=Bisiesto, False=No bisiesto. Método programando en C++ #include <iostream> //cargamos librería using namespace std; //Para no tener que escribir a cada rato std int main() { int bisiesto; //declaramos la variable bisiesto cout<<"Ingrese el año a consultar"<<endl; //Desplegamos en pantalla Ingrese el año 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 año es bisiesto { cout<<"Es bisiesto"<<endl; //Desplegamos en pantalla es bisiesto } else //Si la condicional anterior es falsa entonces el año 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