Programming
Examen Primer Trimestre
Enunciado
Una vez desarrollada la versión anterior, la delegación del gobierno nos ha pedido que incluyamos un nuevo requisito para la concesión de las ayudas,
Una vez que el usuario ha indicado la cantidad que solicita, la aplicación debe pedirle la referencia catastral del inmueble para el que solicita la ayuda y únicamente si la referencia es válida se añadirá la cuantía al total de ayudas otorgadas. Para ello, utilizaremos la función
catastroValido(), a la que se envía un String con la referencia catastral del inmueble y nos indica si está cubierto o no.De los 2 tipos de referencias catastrales existentes, nosotros vamos a utilizar la que comienza por los dígitos de la provincia y del municipio en el que se encuentra el inmueble. En nuestro caso, sólo admitiremos referencias catastrales que estén situados en la provincia de Santa Cruz de Tenerife (código 38). Además, deben estar situados en alguno de los siguientes municipios:
código municipio 24 Llanos de Aridane (Los) 27 Paso (El) 45 Tazacorte Para extraer los códigos de la provincia y del municipio, se utilizarán sendas funciones getProvincia() y getMunicipio() a las que se envía la referencia catastral y devuelven el código correspondiente como un valor entero:
- el código de la provincia corresponde al valor numérico de los 2 primeros caracteres de la referencia catastral.
- el código del municipio corresponde al valor numérico de los caracteres que van del 3º al 5º.
Para obtener esos valores numéricos deberás utilizar las funciones
charAt()eInteger.parseInt()que se han utilizado en anteriores ejercicios.En el ejemplo, las referencias catastrales correspondientes a la segunda y a la tercera solicitud no se suman al total de las ayudas otorgadas porque sus referencias catastrales no son válidas: la primera no corresponde a la provincia y la segunda no corresponde con ninguno de los municipios en los que deben estar situados los inmuebles.
Solución
package ayudaspalma;
import java.util.Scanner;
public class AyudasPalma {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int tipoAyuda;
long cuantiaTotal = 0, cuantiaSolicitada;
do {
mostrarMenu();
tipoAyuda = sc.nextInt();
if(tipoAyuda >= 1 && tipoAyuda <= 3) {
System.out.println("Cantidad solicitada: ");
cuantiaSolicitada = sc.nextLong();
sc.nextLine();
System.out.println("Referencia catastral: ");
if(catastroValido(sc.nextLine())) {
cuantiaTotal += cuantiaOtorgada(tipoAyuda, cuantiaSolicitada);
}
}
} while (tipoAyuda != 0);
System.out.println("Se han concedido ayudas por un total de: " + cuantiaTotal);
}
static void mostrarMenu() {
System.out.println("MENU AYUDAS");
System.out.println("1.- Por destruccion total de la vivienda habitual");
System.out.println("2.- Por danos que afecten a la estructura de la vivienda habitual");
System.out.println("3.- Por danos que no afecten a la estructura de la vivienda habitual");
System.out.println("0.- Salir");
System.out.println("Elija un tipo de ayuda (0-3)");
}
static long cuantiaOtorgada(int tipoAyuda, long cuantiaSolicitada) {
long cuantiaMaxima = 0;
switch(tipoAyuda){
case 1:
cuantiaMaxima = 30240;
break;
case 2:
cuantiaMaxima = 20640;
break;
case 3:
cuantiaMaxima = 10320;
break;
}
if(cuantiaSolicitada > cuantiaMaxima) {
cuantiaSolicitada = cuantiaMaxima;
}
return cuantiaSolicitada;
}
private static boolean catastroValido(String refCatastral) {
boolean refValida = false;
int provincia = getProvincia(refCatastral);
if(provincia == 38) {
int municipio = getMunicipio(refCatastral);
if((municipio == 24) || (municipio == 27) || (municipio == 45)) {
refValida = true;
}
}
return refValida;
}
private static int getProvincia(String refCatastral) {
return Integer.parseInt("" + refCatastral.charAt(0) + refCatastral.charAt(1));
}
private static int getMunicipio(String refCatastral) {
return Integer.parseInt("" + refCatastral.charAt(2) + refCatastral.charAt(3) + refCatastral.charAt(4));
}
}
Input
1 30000 38027A025000400000UI 2 20000 38045A025000400000UI 2 20000 35013A004003870000PK 3 10000 38009A006002300000TA 2 20000 38024A025000400000UI 0
1 30000 38009A006002300000TA 2 20000 38027A025000400000UI 3 10000 35013A004003870000PK 2 20000 38024A025000400000UI 2 20000 38027A025000400000UI 2 20000 38045A025000400000UI 0
Output
MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Se han concedido ayudas por un total de: 70000
MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Cantidad solicitada: Referencia catastral: MENU AYUDAS 1.- Por destruccion total de la vivienda habitual 2.- Por danos que afecten a la estructura de la vivienda habitual 3.- Por danos que no afecten a la estructura de la vivienda habitual 0.- Salir Elija un tipo de ayuda (0-3) Se han concedido ayudas por un total de: 80000

