Last active
May 10, 2024 18:47
-
-
Save ChekeGT/0a2348796e75050d5c175ce16bb7a717 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Nombre del programador: Francisco Ezequiel Baños Ramírez | |
// Fecha de creación: 10 de Mayo del 2024 | |
// Descripción: Este programa determina el signo zodiacal del usuario en base a su fecha de nacimiento. | |
// El programa solicita al usuario su fecha de nacimiento y luego calcula y muestra su signo zodiacal. | |
// Funcionamiento del programa: | |
// Datos de entrada: | |
// Un día de nacimiento ingresado en formato de numero | |
// Un mes de nacimiento ingresado en formato de numero | |
// Si el usuario ingresa de manera equivocada algun dato de entrada, se mostrara un mensaje de error hasta que lo haga de manera correcta | |
// Datos de salida: | |
// El signo zodiacal del usuario en base a su fecha de nacimiento. | |
// El signo zodiacal se muestra en un formato amigable para el usuario. | |
// Incluyendo las bibliotecas necesarias para el programa | |
#include <iostream> // Para entrada y salida estándar | |
#include <string> // Para el uso de cadenas de texto | |
#include <windows.h> // Para utilizar la función Sleep() y limpiar la pantalla | |
// Función para limpiar la pantalla de la consola | |
int clear_screen(){ | |
std::cout << "\033[2J\033[1;1H"; // Código para limpiar la pantalla en sistemas Unix | |
return 0; | |
} | |
// Función para obtener el mes de nacimiento del usuario | |
int get_month(){ | |
int month; | |
std::cout << "Por favor, ingresa el mes en que naciste (1-12): "; | |
std::cin >> month; | |
// Verificar si la entrada es válida | |
if (std::cin.fail() || month < 1 || month > 12){ | |
std::cout << "Por favor, introduce un mes valido (debe estar entre 1 y 12)." << std::endl; | |
Sleep(2000); // Esperar 2 segundos | |
clear_screen(); // Limpiar la pantalla | |
return get_month(); // Llamar a la función recursivamente si la entrada es inválida | |
} | |
return month; | |
} | |
// Función para obtener el día de nacimiento del usuario | |
int get_day(int month){ | |
int day; | |
int maximum_days; | |
// Determinar el número máximo de días según el mes | |
if (month == 2){ | |
maximum_days = 29; // Febrero puede tener hasta 29 días en año bisiesto | |
} else if (month == 4 || month == 6 || month == 9 || month == 11){ | |
maximum_days = 30; // Abril, junio, septiembre y noviembre tienen 30 días | |
} else { | |
maximum_days = 31; // Los demás meses tienen 31 días | |
} | |
std::cout << "Por favor, ingresa el dia en que naciste: "; | |
std::cin >> day; | |
// Verificar si la entrada es válida | |
if (std::cin.fail() || day < 1 || day > maximum_days){ | |
std::cout << "Por favor, introduce un numero valido (debe estar entre 1 y " << maximum_days << ")." << std::endl; | |
Sleep(2000); // Esperar 2 segundos | |
clear_screen(); // Limpiar la pantalla | |
return get_day(month); // Llamar a la función recursivamente si la entrada es inválida | |
} | |
return day; | |
} | |
// Función para determinar el signo zodiacal según la fecha de nacimiento | |
std::string get_zodiac_sign(int month, int day){ | |
// Comparar el mes y día de nacimiento para determinar el signo zodiacal | |
if ((month == 3 && day >= 21) || (month == 4 && day <= 19)){ | |
return "Aries"; | |
} else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)){ | |
return "Tauro"; | |
} else if ((month == 5 && day >= 21) || (month == 6 && day <= 20)){ | |
return "Géminis"; | |
} else if ((month == 6 && day >= 21) || (month == 7 && day <= 22)){ | |
return "Cáncer"; | |
} else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)){ | |
return "Leo"; | |
} else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)){ | |
return "Virgo"; | |
} else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)){ | |
return "Libra"; | |
} else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)){ | |
return "Escorpio"; | |
} else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)){ | |
return "Sagitario"; | |
} else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)){ | |
return "Capricornio"; | |
} else if ((month == 1 && day >= 20) || (month == 2 && day <= 18)){ | |
return "Acuario"; | |
} else { | |
return "Piscis"; // Si no coincide con ningún rango, se asume Piscis | |
} | |
} | |
// Función principal del programa | |
int main(){ | |
int month = get_month(); // Obtener el mes de nacimiento del usuario | |
int day = get_day(month); // Obtener el día de nacimiento del usuario | |
std::string zodiac_sign = get_zodiac_sign(month, day); // Determinar el signo zodiacal | |
std::cout << "Tu signo zodiacal es " << zodiac_sign << "." << std::endl; // Mostrar el signo zodiacal al usuario | |
Sleep(5000); // Esperar 5 segundos | |
return 0; // Salir del programa con éxito | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment