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