Vectores (ordenamiento con vectores paralelos)
Cuando se tienen vectores paralelos y se ordena uno de ellos hay que
tener la precaución de intercambiar los elementos de los vectores
paralelos.
Problema 1:
Confeccionar un programa que permita cargar los nombres de 5 alumnos y
sus notas respectivas. Luego ordenar las notas de mayor a menor.
Imprimir las notas y los nombres de los alumnos.
Programa:
import java.util.Scanner; public class PruebaVector16 { private Scanner teclado; private String[] nombres; private int[] notas; public void cargar() { teclado=new Scanner(System.in); nombres=new String[5]; notas=new int[5]; System.out.println("Carga de nombres y notas"); for(int f=0;f<nombres.length;f++) { System.out.print("Ingese el nombre del alumno:"); nombres[f]=teclado.next(); System.out.print("Ingrese la nota del alumno:"); notas[f]=teclado.nextInt(); } } public void ordenar() { for(int k=0;k<notas.length;k++) { for(int f=0;f<notas.length-1-k;f++) { if (notas[f]<notas[f+1]) { int auxnota; auxnota=notas[f]; notas[f]=notas[f+1]; notas[f+1]=auxnota; String auxnombre; auxnombre=nombres[f]; nombres[f]=nombres[f+1]; nombres[f+1]=auxnombre; } } } } public void imprimir() { System.out.println("Nombres de alumnos y notas de mayor a menor"); for(int f=0;f<notas.length;f++) { System.out.println(nombres[f] + " - " + notas[f]); } } public static void main(String[] ar) { PruebaVector16 pv=new PruebaVector16(); pv.cargar(); pv.ordenar(); pv.imprimir(); } }
Definimos los dos vectores:
private String[] nombres; private int[] notas;
Creamos los dos vectores paralelos con cinco elementos cada uno:
nombres=new String[5]; notas=new int[5];
En el proceso de ordenamiento dentro de los dos for verificamos si debemos intercambiar los elementos del vector notas:
for(int k=0;k<notas.length;k++) { for(int f=0;f<notas.length-1-k;f++) { if (notas[f]<notas[f+1]) {
En el caso que la nota de la posición 'f' sea menor a de la posición siguiente 'f+1' procedemos a intercambiar las notas:
int auxnota; auxnota=notas[f]; notas[f]=notas[f+1]; notas[f+1]=auxnota;
y simultánemamente procedemos a intercambiar los elementos del vector
paralelo (con esto logramos que los dos vectores continuen siendo
vectores paralelos):
String auxnombre; auxnombre=nombres[f]; nombres[f]=nombres[f+1]; nombres[f+1]=auxnombre;
Como vemos utilizamos dos auxiliares distintos porque los elementos de los dos vectores son de distinto tipo (int y String)
Si deseamos ordenar alfabéticamente la condición dependerá del vector nombres.
No hay comentarios.:
Publicar un comentario