Programming

T03-003-01 Funciones con tipos estructurados

Enunciado

Signo del zodiaco con funciones

Queremos hacer un programa Java que calcule el signo del zodiaco al que pertenece una persona dada su fecha de nacimiento.

Para ello, ten en cuenta los siguientes datos:

  • ACUARIO: 21 Enero - 20 Febrero
  • PISCIS: 21 Febrero - 20 Marzo
  • ARIES: 21 Marzo - 20 Abril
  • TAURO: 21 Abril - 20 Mayo
  • GEMINIS: 21 Mayo - 20 Junio
  • CANCER: 21 Junio - 20 Julio
  • LEO: 21 Julio - 20 Agosto
  • VIRGO: 21 Agosto - 20 Septiembre
  • LIBRA: 21 Septiembre - 20 Octubre
  • ESCORPIO: 21 Octubre - 20 Noviembre
  • SAGITARIO: 21 Noviembre - 20 Diciembre
  • CAPRICORNIO: 21 Diciembre - 20 Enero

ENTRADA

La entrada comienza con un número indicando cuántos casos de prueba habrá que procesar.

Cada uno de los casos está compuesto por dos números enteros distintos, el primero indicando el días de la fecha de nacimiento y el segundo indicando el mes de nacimiento

SALIDA

Por cada caso de prueba, el programa escribirá el signo del zodiaco al que pertenece la persona que ha nacido en dicha fecha.

RESTRICCIONES

Deberá resolverse el problema diseñando una función que reciba una fecha (día y mes, dos enteros) y devuelva el signo del zodiaco al que pertenece dicha fecha (un String). Si la fecha es errónea, devolverá la cadena "FECHA ERRONEA". 

El programa principal, para cada uno de los casos, pedirá la fecha por teclado y usará las funciones para resolver el problema, imprimiendo posteriormente el signo del zodiaco asociado a la fecha. Si la fecha es errónea, se imprimirá el mensaje "FECHA ERRONEA"

 

Solución


											
import java.util.Scanner; public class FSignoZodiaco { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int dia, mes; int numCasos = 0; numCasos = sc.nextInt(); for (int i = 1; i <= numCasos; i++) { dia = sc.nextInt(); mes = sc.nextInt(); System.out.println(signoZodiaco(dia, mes)); } } public static String signoZodiaco(int dia, int mes) { String signo; if ((mes == 1 && dia >= 21 && dia <= 31) || (mes == 2 && dia <= 20 && dia >= 1)) { signo = "ACUARIO"; } else if ((mes == 2 && dia >= 21 && dia <= 29) || (mes == 3 && dia <= 20 && dia >= 1)) { signo = "PISCIS"; } else if ((mes == 3 && dia >= 21 && dia <= 31) || (mes == 4 && dia <= 20 && dia >= 1)) { signo = "ARIES"; } else if ((mes == 4 && dia >= 21 && dia <= 30) || (mes == 5 && dia <= 20 && dia >= 1)) { signo = "TAURO"; } else if ((mes == 5 && dia >= 21 && dia <= 31) || (mes == 6 && dia <= 20 && dia >= 1)) { signo = "GEMINIS"; } else if ((mes == 6 && dia >= 21 && dia <= 30) || (mes == 7 && dia <= 20 && dia >= 1)) { signo = "CANCER"; } else if ((mes == 7 && dia >= 21 && dia <= 31) || (mes == 8 && dia <= 20 && dia >= 1)) { signo = "LEO"; } else if ((mes == 8 && dia >= 21 && dia <= 31) || (mes == 9 && dia <= 20 && dia >= 1)) { signo = "VIRGO"; } else if ((mes == 9 && dia >= 21 && dia <= 30) || (mes == 10 && dia <= 20 && dia >= 1)) { signo = "LIBRA"; } else if ((mes == 10 && dia >= 21 && dia <= 31) || (mes == 11 && dia <= 20 && dia >= 1)) { signo = "ESCORPIO"; } else if ((mes == 11 && dia >= 21 && dia <= 30) || (mes == 12 && dia <= 20 && dia >= 1)) { signo = "SAGITARIO"; } else if ((mes == 12 && dia >= 21 && dia <= 31) || (mes == 1 && dia <= 20 && dia >= 1)) { signo = "CAPRICORNIO"; } else { signo = "FECHA ERRONEA"; } return signo; } }

Input

15 1 1 15 6 21 10 20 1 21 6 30 2 28 15 21 2 21 9 20 10 20 11 21 11 31 11 26 5 21 3
15 1 1 15 6 21 10 20 1 21 6 30 2 28 15 21 2 21 9 20 10 21 11 31 11 20 11 26 5 21 3

Output

CAPRICORNIO GEMINIS ESCORPIO CAPRICORNIO CANCER FECHA ERRONEA FECHA ERRONEA PISCIS LIBRA LIBRA ESCORPIO SAGITARIO FECHA ERRONEA GEMINIS ARIES
CAPRICORNIO GEMINIS ESCORPIO CAPRICORNIO CANCER FECHA ERRONEA FECHA ERRONEA PISCIS LIBRA LIBRA SAGITARIO FECHA ERRONEA ESCORPIO GEMINIS ARIES