66 A. García-Beltrán y J.M.
Arranz
Ejercicios resueltos del Capítulo de Sentencias condicionales o selectivas
1) Construir un programa que calcule el índice de masa corporal de una persona (IMC = peso [kg] /
altura2 [m]) e indique el estado en el que se encuentra esa persona en función del valor de IMC:
Valor de IMC Diagnóstico
< 16 Criterio de ingreso en hospital
de 16 a 17 infrapeso
de 17 a 18 bajo peso
de 18 a 25 peso normal (saludable)
de 25 a 30 sobrepeso (obesidad de grado I)
de 30 a 35 sobrepeso crónico (obesidad de grado II)
de 35 a 40 obesidad premórbida (obesidad de grado III)
>40 obesidad mórbida (obesidad de grado IV)
Nota 1: se recomienda el empleo de sentencias if–else anidadas. Nota 2: Los operandos (peso y
altura) deben ser introducidos por teclado por el usuario.
2) Construir un programa que calcule y muestre por pantalla las raíces de la ecuación de segundo
grado de coeficientes reales. El programa debe diferenciar los diferentes casos que puedan surgir: la
existencia de dos raíces reales distintas, de dos raíces reales iguales y de dos raíces complejas. Nota:
se recomienda el empleo de sentencias if–else anidadas.
3) Construir un programa que simule el funcionamiento de una calculadora que puede realizar las
cuatro operaciones aritméticas básicas (suma, resta, producto y división) con valores numéricos
enteros. El usuario debe especificar la operación con el primer carácter del primer parámetro de la
línea de comandos: S o s para la suma, R o r para la resta, P, p, M o m para el producto y D o d para
la división. Los valores de los operandos se deben indicar en el segundo y tercer parámetros. Nota:
Se recomienda el empleo de una sentencia switch.
Programación orientada a objetos con Java 67
Soluciones a los ejercicios del Capítulo de Sentencias condicionales o selectivas
1) Programa que calcula el IMC de una persona:
import [Link].*;
public class IndiceIMC {
public static void main (String[] args) {
[Link]("Calculo del indice de masa corporal");
Scanner entrada = new Scanner([Link]);
[Link]("Introduce el peso (en kg): ");
double peso = [Link]();
[Link]("Introduce la altura (en centimetros): ");
double altura = [Link]()/100;
double imc = peso/(altura*altura);
[Link]("Para un peso de "+ peso +" kilogramos y");
[Link]("una altura de "+ altura + " metros");
[Link]("el indice de masa corporal es de "+ (int)imc);
if (imc<16) { [Link]("Necesita ingresar en un hospital");
} else if (imc<17) { [Link]("Usted tiene infrapeso");
} else if (imc<18) { [Link]("Usted tiene bajo peso");
} else if (imc<26) { [Link]("Usted tiene un peso saludable");
} else if (imc<30) { [Link]("Tiene sobrepeso de grado I");
} else if (imc<35) { [Link]("Tiene obesidad de grado II");
} else if (imc<40) { [Link]("Tiene obesidad premorbida (III)");
} else { [Link]("Usted tiene obesidad morbida o de grado IV");
}
}
}
$>java IndiceIMC
Calculo del indice de masa corporal Tiene dos raices reales
Introduce el peso (en kg): 75
Introduce la altura (en centimetros): 174
Para un peso de 75.0 kilogramos y
una altura de 1.74 metros
el indice de masa corporal es de 24
Usted tiene un peso saludable
2) Programa que calcula y muestra por pantalla las raíces de la ecuación de segundo grado de
coeficientes reales.
/**
* Ecuacion2g: Ejemplo de sentencias if-else anidadas
* Muestra el valor de las raices de una ecuacion de 2º grado
* A. Garcia-Beltran - octubre, 2004
*/
public class Ecuacion2g {
public static void main (String [] args) {
double a; // Coeficiente de grado 2
double b; // Coeficiente de grado 1
double c; // Coeficiente de grado 0
double discriminante; // Discriminante
double x1; // Primera raiz real
double x2; // Segunda raiz real
double preal; // Parte real de la raiz compleja
double pimag; // Parte imaginaria de la raiz compleja
a = [Link](args[0]);
b = [Link](args[1]);
c = [Link](args[2]);
discriminante = b*b - 4*a*c;
68 A. García-Beltrán y J.M. Arranz
if (discriminante>0) {
// Dos raices reales
x1 = (-b + [Link](discriminante))/(2*a);
x2 = (-b - [Link](discriminante))/(2*a);
[Link]("Soluciones de la ecuacion de segundo grado: ");
[Link](a + "x2 + " + b + "x + " + c);
[Link]("Tiene dos raices reales");
[Link]("La primera raiz es x1 = " + x1);
[Link]("La segunda raiz es x2 = " + x2);
}
else if (discriminante<0) {
// Dos raices imaginarias
preal = (-b)/(2*a);
pimag = [Link](-discriminante)/(2*a);
[Link]("Soluciones de la ecuacion de segundo grado: ");
[Link](a + "x2 + " + b + "x + " + c);
[Link]("Tiene dos raices complejas");
[Link]("La primera raiz es x1 = " + preal + "+i" + pimag);
[Link]("La segunda raiz es x2 = " + preal + "-i" + pimag);
}
else {
// Dos raices iguales
x1 = (-b)/(2*a);
[Link]("Soluciones de la ecuacion de segundo grado: ");
[Link](a + "x2 + " + b + "x + " + c);
[Link]("Dos raices identicas, x1 = x2 = " + x1);
}
}
}
Ejemplos de ejecución y salida correspondiente por pantalla:
$>java Ecuacion2g 1 5 6
Soluciones de la ecuacion de segundo grado: 1.0x2 + 5.0x + 6.0
Tiene dos raices reales
La primera raiz es x1 = -2.0
La segunda raiz es x2 = -3.0
$>java Ecuacion2g 1 4 4
Soluciones de la ecuacion de segundo grado: 1.0x2 + 4.0x + 4.0
Dos raices identicas, x1 = x2 = -2.0
$>java Ecuacion2g 1 3 6
Soluciones de la ecuacion de segundo grado: 1.0x2 + 3.0x + 6.0
Tiene dos raices complejas
La primera raiz es x1 = -1.5+i1.9364916731037085
La segunda raiz es x2 = -1.5-i1.9364916731037085
3) Programa que simula el funcionamiento de una calculadora que puede realizar las cuatro
operaciones aritméticas básicas (suma, resta, producto y división) con valores numéricos enteros. El
usuario debe especificar la operación con el primer carácter del primer parámetro de la línea de
comandos: S o s para la suma, R o r para la resta, P, p, M o m para el producto y D o d para la
división. Los valores de los operandos se deben indicar en el segundo y tercer parámetros.
/**
* Calcula: Ejemplo de uso de la sentencia switch
* Simula el funcionamiento de una calculadora
* A. Garcia-Beltran - octubre, 2004
Programación orientada a objetos con Java 69
*/
public class Calcula {
public static void main (String [] args) {
char c;
int a,b;
c=args[0].charAt(0);
a = [Link](args[1]);
b = [Link](args[2]);
switch (c) {
case 'S':
case 's': [Link]("Resultado de la suma: " + (a+b)); break;
case 'R':
case 'r': [Link]("Resultado de la resta: " + (a-b)); break;
case 'M':
case 'm':
case 'P':
case 'p': [Link]("Resultado del producto: " + a*b); break;
case 'D':
case 'd': [Link]("Resultado de la division: " + a/b); break;
default: [Link]("Por favor, indica la operacion"); break;
}
}
}
Ejemplos de ejecución y salida correspondiente por pantalla:
$>java Calcula resta 3 4
Resultado: -1
$>java Calcula producto 3 4
Resultado: 12