Skip to content

Instantly share code, notes, and snippets.

@ChekeGT
Last active May 10, 2024 18:47
Show Gist options
  • Save ChekeGT/0a2348796e75050d5c175ce16bb7a717 to your computer and use it in GitHub Desktop.
Save ChekeGT/0a2348796e75050d5c175ce16bb7a717 to your computer and use it in GitHub Desktop.
// 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