AYUDA java matrices

Iniciado por betast, 24 Febrero 2019, 18:07 PM

0 Miembros y 1 Visitante están viendo este tema.

betast

El numero de columnas y de filas las da el usuario.
No se como lograr que mi programa dado una columna(ingresada por el usuario) me analice cual es el elemento mayor y menor que tiene dicha columna.


Código:

Código (java) [Seleccionar]
package metodos;
import javax.swing.JOptionPane;
 
public class miMatriz {
    public static int ventas[][];
    public static int mes[];
    public static int vendedor[];
    public static int tf, tc;
   

    public static void llenarM(){
        int i, j;
        tc = Integer.parseInt( JOptionPane.showInputDialog(
        "Entre número de meses [1 - 12]:") );
        tf = Integer.parseInt( JOptionPane.showInputDialog(
        "Entre número de vendedores: ") );
        ventas = new int[tf][tc];
        mes = new int[tc];
        vendedor = new int[tf];       
        for(i=0; i<tf; i++){
            for(j=0; j<tc; j++){
                ventas[i][j] = Integer.parseInt(JOptionPane.showInputDialog(
                "Entre ventas del vendedor en ["+i+"]["+j+"]:"));
            }
        } 
    }
   
    public static void mostrarM( ){
        int i, j;
        String aux="Los elementos de la matriz de ventas son: \n";
        for(i=0; i<tf; i++){
            for(j=0; j<tc; j++){
                aux += "[ "+ventas[i][j]+" ]";
            }
            aux+="\n";
        }
        JOptionPane.showMessageDialog(null, aux);
    }
   
    public static void vectorMes(){
        int i, j;
        for(j=0;j<tc;j++){
            for(i=0; i<tf; i++){
                mes[j] += ventas[i][j];
            }
        }
    }
     
    public static void vectorVendedor(){
        int i, j;
        for(i=0; i<tf; i++){
            for(j=0; j<tc; j++){
                vendedor[i] += ventas[i][j];
            }
        }
    }

        public static void mostrarVec( String x, int vec[] ){
        int i;
        String aux="< ";
        for(i=0; i<vec.length; i++){
            if( i < (vec.length-1) )
                aux += ""+vec[i]+","
                        + " ";
            else
                aux += ""+vec[i]+" >";
        }
        JOptionPane.showMessageDialog(null, ""+x+"\n"+aux);
    }
   
    public static void MejorVendedor( ){
        int pos=0, i;
        int may=vendedor[0];
        for(i=0; i<vendedor.length; i++){
            if(vendedor[i]>may){
                may=vendedor[i];
                pos=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El mejor vendedor es: "+pos);
    }
   
    public static void PeorVendedor( ){
        int pos1=0, i;
        int men=vendedor[0];
        for(i=0; i<vendedor.length; i++){
            if(vendedor[i]<men){
                men=vendedor[i];
                pos1=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El peor vendedor es: "+pos1);
    }
   
    public static void MejorMes( ){
        int pos=0, i;
        int may=mes[0];
        for(i=0; i<mes.length; i++){
            if(mes[i]>may){
                may=mes[i];
                pos=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El mejor mes de ventas es: "+pos);
    }
   
    public static void PeorMes( ){
        int pos=0, i;
        int men=mes[0];
        for(i=0; i<mes.length; i++){
            if(mes[i]<men){
                men=mes[i];
                pos=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El peor mes de ventas es: "+pos);
    }

   
    public static void main(String args[]){
       
        llenarM();
        mostrarM();
        vectorMes();
        mostrarVec("La información de ventas de cada mes es: ", mes);
        vectorVendedor();
        mostrarVec("La información de ventas de cada vendor es: ", vendedor);
        MejorVendedor();
        PeorVendedor();
        MejorMes();
        PeorMes();
        pedirColumna();
        System.exit(0);
    }
   
}


MOD: Etiqueta GeSHi.

Tektor

Mira, hice un pequeño programa que probablemente te ayude a despejar dudas.

El programa te pide los datos necesarios para crear la matriz y también los datos para llenarla. Posterior a eso, te muestra la matriz y te pide el número de columna en la que quieres buscar tu dato. Después de ingresar el número de columna, te pregunta por qué dato quieres buscar, o sea si quieres el menor o el mayor. Al final, te muestra el dato solicitado.

Respecto a tu pregunta, lo realmente importante son los métodos getMayor() y getMenor() que son muy similares. Revisa la forma en la que funcionan los métodos.

Saludos.

El codigo:

Código (java) [Seleccionar]


import java.util.Scanner;

class Ejemplo{
public static void main(String args[]){

int columnas, filas;
int matriz[][];

Scanner dato = new Scanner(System.in);
System.out.println("Ingrese un número de filas");
filas = dato.nextInt();
System.out.println("Ingrese un número de columnas: ");
columnas = dato.nextInt();

matriz = new int [filas][columnas];

for(int i=0; i<filas; i++){
for(int j=0; j<columnas; j++){
System.out.println("Ingrese el dato que corresponde a la fila " + i + " y columna " + j);
matriz[i][j] = dato.nextInt();
}
}

for(int i=0; i<filas; i++){
for(int j=0; j<columnas; j++){
System.out.print(matriz[i][j] + " ");
}
System.out.println("");
}

System.out.println("Ingrese el número de columna en la que desea buscar:");
int c = dato.nextInt();

if(c>=matriz[0].length){
System.out.println("Opción inválida.");
}

System.out.println("Ingrese 'M' para encontrar el mayor o 'm' para encontrar el menor");
String o = dato.next();

if(o.equals("M")){

System.out.println("El mayor dato en la culumna " + c + " es: " + getMayor(c,matriz));

} else {
if(o.equals("m")){

    System.out.println("El menor dato en la culumna " + c + " es: " + getMenor(c,matriz));

} else {
System.out.println("Opción inválida");
}

}

public static int getMayor(int columna, int matriz[][]){
int mayor = matriz[0][columna];

for(int i=1; i<matriz.length; i++){
if(matriz[i][columna]>mayor){
mayor = matriz[i][columna];
}
}

return mayor;
}

public static int getMenor(int columna, int matriz[][]){
int menor = matriz[0][columna];

for(int i=1; i<matriz.length; i++){
if(matriz[i][columna]<menor){
menor = matriz[i][columna];
}
}

return menor;
}

}



Enviado desde mi SAMSUNG-SM-G920A mediante Tapatalk

MAFUS

Para la próxima vez debes hacer tu publicación en el foro de Java: https://foro.elhacker.net/java-b70.0/