Partiremos de dos tablas de datos de igual tamaño.
- Una con datos de tipo float (con alturas).
- Otra con datos de tipo String (con nombres).
Supondremos que cada posición indica en dichas tabla la altura y el nombre de una misma persona.
Hacer un programa que inicialice dichas tablas con valores supuestos.
El programa pedirá por la entrada estandar una altura, buscando a continuación el nombre de la persona más alta que no sobrepase la altura introducida.
- Si no encuentra ninguna... lo indicará.
- Si encuentra varias... solo debe mostrar la primera.
public class BuscarAltura {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float[] alturas = {1.55F, 1.48F, 1.76F, 1.59F, 1.70F, 1.63F, 1.82F};
String[] nombres = {"Macarena", "Pablo", "María", "Noel", "Eduardo", "Manuel", "Julia"};
int i, ini, fin;
float alturaBuscada, auxAlt;
String auxNom;
boolean buscadaMayor = false, intercambio = true;
System.out.print("Introduzca la altura a buscar: ");
alturaBuscada = entrada.nextFloat();
//Primero ordenamos la tabla:
ini = 0;
fin = alturas.length-1;
while (ini<fin & intercambio){
intercambio = false;
for (i=ini; i<fin; i++){
if (alturas[i] > alturas[i+1]){
auxAlt = alturas[i];
alturas[i] = alturas[i+1];
alturas[i+1] = auxAlt;
auxNom = nombres[i];
nombres[i] = nombres[i+1];
nombres[i+1] = auxNom;
intercambio = true;
}
}
fin--;
if (intercambio){
intercambio = false;
for (i=fin-1; i>=ini; i--){
if (alturas[i] > alturas[i+1]){
auxAlt = alturas[i];
alturas[i] = alturas[i+1];
alturas[i+1] = auxAlt;
auxNom = nombres[i];
nombres[i] = nombres[i+1];
nombres[i+1] = auxNom;
intercambio = true;
}
}
}
ini++;
}
//Ahora buscamos AlturaBuscada:
i=alturas.length-1;
while (i>=0 & !buscadaMayor){
if (alturaBuscada >= alturas[i])
buscadaMayor = true;
i--;
}
if (!buscadaMayor)
System.out.println("No hay ninguna altura menor que la introducida.");
else
System.out.println("La persona más alta que no supera la altura introducida es: "+nombres[i+1]);
}
}
No hay comentarios:
Publicar un comentario