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

