Un año es bisiesto si es divisible entre 4, excepto el último de cada siglo (aquel divisible por 100), salvo que este último sea divisible por 400.
Con ésto es posible escribir la función Bisiesto que contiene este programa. Tal vez lo único extraño es la llamada de esta función mediante if. En realidad hay que recordar que un condicional en C++ se evalúa como true o como false, (véase el inciso 3 de esta entrada)así que, dado que la función llamada (Bisiesto) devuelve uno de esos dos valores, es perfectamente válido invocarla en el if.
//////////////////////////////////////////////////// // Este programa recibe un anio e imprime si es // // bisiesto o no // // ///////////////////////////////////////////////// #include <iostream> using namespace::std; bool Bisiesto( int ); int main() { // Abre main int anio; cout <<"\nIntroduzca un anio y sabra si es bisiesto:\n"; cin >> anio; if ( Bisiesto( anio ) ) // Nota: If solo evalua true o false cout << anio << " es un anio bisiesto." << endl; else // es decir, si es false cout << anio << " no es un anio bisiesto." << endl; return 0; } // Cierra main //////////////////////////////////////////////////// // FUNCION BISIESTO //////////////////////////////////////////////////// bool Bisiesto( int a ) // Esta funcion regresa un valor booleano true // si el anio es bisiesto y regresa el valor // booleano false si el anio no es bisiesto { // Abre funcion Bisiesto if ( 0 != a%4 ) return false; else if ( 0 != a % 100 ) return true; else if ( 0 != a % 400 ) return false; else return true; } // Cierra funcion BisiestoAquí una ejecución del programa:
Introduzca un anio y sabra si es bisiesto: 2004 2004 es un anio bisiesto.
antes que nada muchas gracias
ResponderEliminarsolo que al ejecutar el programa e introdusco un numero para saber si el año es bisiesto o no se cierra y ya no si si es bisiesto que hago?
¡Hola, Oscar! Aquí el asunto es que seguro estás usando windows, y por lo tanto, lo que sucede es que la ejecución es tan rápida que no puedes verla.
EliminarUna opción, si es que usas windows, es que pongas, al final de la función main, pero antes de la instrucción return 0, la línea:
system("PAUSE");
lo que estás haciendo es una llamada al sistema, con éso se detiene la pantalla y sólo das enter para continuar.
Otra opción es que pongas, al final del programa, antes de cerrar main cin.get(); cin.get();
Saludos.