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:
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.
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:
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
Para la próxima vez debes hacer tu publicación en el foro de Java: https://foro.elhacker.net/java-b70.0/