How to exchange a larger number with a smaller number and vice versa?

3

I have problems with a programming fundamentals exercise that asks me to enter n numbers to a vector and exchange the largest number in the position of the smallest number and vice versa and then show it

 int a[];
        int ta;
        int menor =99999999;
        int mayor=0;
        String vi= "";
        String vf="";

        int aux=0;
        ta=Integer.parseInt(JOptionPane.showInputDialog( "Ingrese el tamaño del vector"));

        a= new int [ta];

        for (int i=0; i<ta; i++){
           a[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el valor del vector en la posicion "+i));
            vi= vi+ "["+a[i]+"]";

             }

        for (int k=0 ; k<ta; k++){
            if (a[k]> mayor  && a[k]< menor){
                 aux =mayor;
                 menor = mayor;
                 aux= menor;



            vf= vf + "["+ a[k]+"]";

        }  
    }  
        JOptionPane.showMessageDialog(null, "Los valores en las posiciones  iniciales son:"+vi +
                "\n  Los valores en las posiciones finales son "+vf);
    }
    
asked by Glenda Guerrero Flores 06.04.2018 в 04:44
source

1 answer

2

I help you with your problem. I have done it for you and I have commented step by step.

Code:

import javax.swing.JOptionPane;

public class Ejercicio {

    public static void main(String[] args) {

        int vector[];
        int tamanoVector;
        int menor;
        int mayor;
        int posicionMenor = 0;
        int posicionMayor = 0;

        tamanoVector = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el tamaño del vector"));

        vector = new int[tamanoVector];

        // Pedimos los valores para el vector
        for (int i = 0; i < vector.length; i++) {
            vector[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el valor del vector en la posicion " + i));
        }

        // Imprimir vector para confirmar que los datos fueron guardados correctamente
        System.out.println("Vector de " + tamanoVector + " posiciones:");
        for (int i = 0; i < vector.length; i++) {
            System.out.println("[" + i + "] " + vector[i]);
        }

        // Asignar a mayor y menor el valor de la primera posición del arreglo
        menor = vector[0];
        mayor = vector[0];

        // (puedes usar int = i nuevamente, no habrá problemas ya que es un "scope" diferente
        for (int i = 0; i < vector.length; i++) {
            if (menor > vector[i]) {
                menor = vector[i];
                posicionMenor = i;
            }

            if (mayor < vector[i]) {
                mayor = vector[i];
                posicionMayor = i;
            }
        }

        // Imprimir el mayor y el menor
        System.out.println("\nMenor: [" + posicionMenor + "] " + menor + "\nMayor: [" + posicionMayor + "] " + mayor);

        // Cambiar posiciones en el vector
        vector[posicionMenor] = mayor;
        vector[posicionMayor] = menor;

        // Imprimir vector nuevamente con las posiciones cambiadas
        System.out.println("\nMayor y menor cambiados:");
        for (int i = 0; i < vector.length; i++) {
            System.out.println("[" + i + "] " + vector[i]);
        }
    }
}

Output:

  

Vector of 3 positions:

     

[0] 86

     

[1] 50

     

[2] 12

     

Minor: [2] 12

     

Major: [0] 86

     

Vector with changed major and minor:

     

[0] 12

     

[1] 50

     

[2] 86

If you need to show the result with JOptionPane , I'm sure you can do it without problems.

I hope I have helped you, regards!

    
answered by 06.04.2018 / 06:12
source