elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Hacer una lista con arreglos en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hacer una lista con arreglos en Java  (Leído 12,801 veces)
sakura_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Hacer una lista con arreglos en Java
« en: 14 Noviembre 2010, 21:20 pm »

Hola!
Soy nueva en este foro y también la programacion con Java. No sé si en el titulo me explique bien pero se los pongo mas detallado.

Tengo que hacer un programa que solicite el nombre de 5 vendedores que venden 3 tipos de productos. Para esto declaré un arreglos multidimensional, creo que hasta aqui voy bien (de no ser así corrijanme por favor!)

Habiendo capturado estos datos, se tiene que hacer el calculo de que vendedor tiene mas ventas y en que producto. Pensaba mandar a llamar o acceder a los productos de cada vendedor en particular y sumarlos, lo mas obvio lo sé, pero con el arreglo no se me ocurre como hacerlo, por eso pensé en hacer una lista, o mandar llamar otro objeto pero hasta ahora nada me ha funcionado.

Les dejo lo que llevo hasta ahora.

Código:
import java.io.*;

 class tablaproduc {
    InputStreamReader isr = new InputStreamReader (System.in);
      BufferedReader flujoE = new BufferedReader (isr);
String vend[] = new String [5];
int prod [][] = new int [5][3];
float totv []=new float[5];

int x, z;
float ventas=0;

public tablaproduc(){
 
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
   

    vend[x]="";
    prod[x][z]=0;
    totv[x]=0;
   
  }
}
}

public void burbuja(){
    String tempvend="";
    int tempprod=0, pasada=0;
    float temptotv;
   
    for (pasada=1;pasada<5; pasada=pasada+1){
       for (x=0; x<4; x=x+1){
       for (z=0; z<2; z=z+1){
           
               tempvend=vend[x];
               tempprod =prod[x][z];
               temptotv=totv[x];
             
               vend[x]=vend[x+1];
               prod[x][z]=prod[x][z+1];
               totv[x]=totv[x+1];

               vend[x+1]=tempvend;
               prod[x][z+1]=tempprod;
               totv[x+1]=temptotv;
             
          }
           }
    }
   }

public void muestra (){
   
      System.out.println("Datos de ventas:");
    for (x=0; x<5; x=x+1){
    for (z=0; z<3; z=z+1){
        System.out.println(vend[x]+"  "+prod[x][z]);
    System.out.println("\t"+"El total de ventas es de:"+ventas);
    }
    }
   
}

public void calcula (){
    for (x=0; x<5; x=x+1){
    for (z=0; z<3; z=z+1){
      ventas=ventas+totv[x];
     }
}
}

public void captura (){

       for(x=0;x<5;x=x+1){
     for(z=0;z<3;z=z+1){
   
  try {

   System.out.println("Ingrese nombre de vendedor:");   
   vend[x]=flujoE.readLine();
    System.out.println("Ingrese el producto:");
     prod[x][z]=Integer.parseInt(flujoE.readLine());
     totv[x]=(vend[x]);}
    catch(IOException e) {}

}
}
}

}

/**
 *
 * @author sakura_
 */
public class proyecto {


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     tablaproduc datos= new tablaproduc();
         datos.captura();
         datos.calcula();
         datos.muestra();
         datos.burbuja();
     
   
     // TODO code application logic here
    }

}[code=java]
[/code]

También ahi están mis intentos de hacer la suma, pero obviamente no salen.

De antemano gracias por cualquier ayuda que me puedan dar!  ;D


En línea

KuraraGNU

Desconectado Desconectado

Mensajes: 209



Ver Perfil
Re: Hacer una lista con arreglos en Java
« Respuesta #1 en: 15 Noviembre 2010, 18:46 pm »

A ver, he intentado leer tu programa, pero me lía mucho, si me lo explicas, quizás lo entienda. Creo que te pasas de poner arrays, desde mi opinión, sólo hace falta una, que es la de los productos, yo haría esto:

Clase Productos
  • String Nombre
  • Float Precio
  • Int Cantidad

Clase Vendedor
  • String Nombre
  • Productos[] prod

El número de productos, lo introduces por teclado
Código
  1. p = flujoE.readline()//(O el metodo que tengas para leer int, sino le haces un cast)
  2. prod = new Productos[p];

Y ya a partir de ahí llamas al constructor que hallas creado en Productos y le metes al vector prod[] los objetos Productos.

Clase Test(Main)
Aquí haces los cálculos que tengas que hacer, creas vendedores si quieres (pues cada vendedor ya vendrá con su producto) y ya haces las sumas. Si quieres que los productos se llamen igual para todos los vendedores, crea un objeto producto común para todos y se lo metes como parámetro y modificas la cantidad desde el método de cambiar cantidad de la clase Productos (ya que el campo es privado).


Si quieres te pongo más cosas, pero creo que con eso ya sabrías tú hacerlo, si no te parece bien mi idea y prefieres seguir haciéndolo de la forma en la que lo estás haciendo, explícamela porque no la entiendo :P


Yo suelo ser de complicar mucho el código, pero bueno, intento ayudar en lo que puedo ^^


En línea

sakura_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Hacer una lista con arreglos en Java
« Respuesta #2 en: 16 Noviembre 2010, 08:55 am »

A lo que estoy viendo, creo que si sería muchisimo mas facil hacerlo como dices tú.
Pero a falta de tiempo creo que primero tratare de terminar el codigo asi como lo tengo ahorita para despues mejorarlo (aun me falta el trabajo final, asi que tendre chance de hacerlo xD)

Hubo algo que no entendí de tu ecplicacion.

Citar
Si quieres que los productos se llamen igual para todos los vendedores, crea un objeto producto común para todos y se lo metes como parámetro y modificas la cantidad desde el método de cambiar cantidad de la clase Productos (ya que el campo es privado).

Eso me sería muy util, pero no entiendo como o.o

Mi codigo hasta ahora va así:

Código:
import java.io.*;
 
 class tablaproduc {
    InputStreamReader isr = new InputStreamReader (System.in);
      BufferedReader flujoE = new BufferedReader (isr);
String vend[] = new String [5];
int prod[][] = new int [5][3];
float totv []=new float[5];
float mayor[] = new float[5];
float menor[]= new float[5];
 
int x, z;
float orden = 0;
 
public tablaproduc(){
for (x=0; x<5; x=x+1){
vend[x]="";
 
for (z=0; z<3; z=z+1){
prod[x][z]=0;
}
 
totv[x]=0;
mayor[x]=0;
menor[x]=0;
}
}
 
public void burbuja(){
    String tempvend="";
    int tempprod=0, pasada=0;
    float temptotv;
    float tempmenor;
 
    for (pasada=1;pasada<5; pasada=pasada+1){
       for (x=0; x<4; x=x+1){
       for (z=0; z<2; z=z+1){
 
               tempvend=vend[x];
               tempprod =prod[x][z];
               temptotv=totv[x];
               tempmenor=menor[x];

               vend[x]=vend[x+1];
               prod[x][z]=prod[x][z+1];
               totv[x]=totv[x+1];
               menor[x]=menor[x+1];
 
               vend[x+1]=tempvend;
               prod[x][z+1]=tempprod;
               totv[x+1]=temptotv;
               menor[x+1]=tempmenor;
 
           }
           }
 
    }
 
   }
 
public void muestra (){
 
    System.out.println("Datos de ventas:");
 
    for (x=0; x<5; x=x+1){
    for (z=0; z<3; z=z+1){
    System.out.println(vend[x]+"  "+prod[x][z]);   
 
    }
    }
    for (x=0; x<5; x=x+1){
    System.out.println("\n"+"El total de ventas de"+" "+vend[x]+" "+"es de"+"\n"+totv[x]);
    System.out.println("\t"+"Su producto mas vendido es:"+mayor[x]);
    System.out.println("\t"+"El producto menos vendido es:"+menor[x]);
 
   }
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
 
 System.out.println("El producto"+" "+prod[x][z]+" "+"fue vendido un total de:"+" "+orden);
}
}
 
 }
 

 
public void calcularmayor(){
 
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
if(prod[x][z] > mayor[x]){
mayor[x] = prod[x][z];
}
}
}
}
 
public void calcularmenor(){
 
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
if(prod[x][z] < menor[x]){
menor[x] = prod[x][z];
}
}
}
}
 
public void calcularorden(){
 
int cantidad_numeros = 0;
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
orden += prod[x][z];
cantidad_numeros ++;
}
orden = (orden + cantidad_numeros);
}
}
 
public void captura (){
 
for(x=0;x<5;x=x+1){
try {
System.out.println("Ingrese nombre de vendedor:");
vend[x]=flujoE.readLine();
for(z=0;z<3;z=z+1){
System.out.println("Ingrese el producto:");
prod[x][z]=Integer.parseInt(flujoE.readLine());
totv[x]+=(float)(prod[x][z]);


}
}catch(IOException e) {}
}
}
}
 
/**
 *
 * @author sakura
 */
public class proyecto {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     tablaproduc datos= new tablaproduc();
         datos.captura();
         datos.calcularmayor();
         datos.calcularmenor();
         datos.calcularorden();
         datos.muestra();
         datos.burbuja();
 
     // TODO code application logic here
    }
 
}

Lo que trato de hacer (olvidandome ya del otro problema, lo de hacer una lista) es calcular las ventas totales de cada vendedor, su producto con mas y menores ventas, ademas de cuantas veces se vendió ese producto en total.

Se supone que eso debería hacerlo hasta ahora, pero los metodos "calcularmenor" y "calcularorden" no me salen. Y necesito saber porque porque me falta agregar que producto tuvo menos ventas en total y acomodar a los vendedor por numero de ventas.

Yo sé (o creo tener la idea) de que con que me ayuden con los metodos que tengo bastaria para sacar lo que me hace falta. Así que con que me digan porque no me funciona lo que llevo hasta ahora lo agradecería mucho n.n
En línea

KuraraGNU

Desconectado Desconectado

Mensajes: 209



Ver Perfil
Re: Hacer una lista con arreglos en Java
« Respuesta #3 en: 16 Noviembre 2010, 09:32 am »

Suponiendo que tengas el resto del código bien (que no lo he mirado):

Que raro ¿Y el calcularmayor sí te sale?

Es que, estás comparando un array de int y otro de float, no se si eso es posible, para comparar tienen que ser del mismo tipo (no se si se autocastea implícitamente).

Código
  1. public void calcularmayor()
  2. {
  3.  
  4.    for (x=0; x<5; x=x+1)
  5.    {
  6.           for (z=0; z<3; z=z+1)
  7.           {
  8.            if(prod[x][z] > mayor[x]){
  9.                 mayor[x] = prod[x][z];
  10.           }
  11.    }
  12. }
  13.  
Y ya aparte de esto, yo no concivo(nunca lo he probado), que se compare una matriz de 2 elementos con una de 1 ¿Me puedes explicar qué es lo que hace internamente el programa cuando ocurre esto? Yo como persona no sabría compararlo :S ---> Ya me lo han explicado :P
« Última modificación: 16 Noviembre 2010, 11:05 am por KuraraGNU » En línea

16BITBoy

Desconectado Desconectado

Mensajes: 137


En mi pompa..


Ver Perfil WWW
Re: Hacer una lista con arreglos en Java
« Respuesta #4 en: 16 Noviembre 2010, 10:13 am »

Sakura, no me he liado demasiado con el código como tu comprenderás es bastante largo y difícil de leer sin las tabulaciones, y no creo que hayas localizado un problema en concreto. Sin embargo mencionas lo de comprobar el menor y el mayor. Para calcular esas dos cosas debe hacerse lo siguiente según mis conocimientos, aunque pueda hacerse de otra forma:

--Mayor--

- Variable o matriz de variables mayores a cero
- Realizar la comprobación pertinente entre todos los valores, y asignar a la variable el valor que cumpla la condición.

Hasta aquí creo que has llegado, sino compruébalo, pero donde estoy seguro que fallas es en lo siguiente:

--Menor--

- Tener calculado el mayor / mayores en primer lugar.
- Asignar el/los valores mayores a los menores

- Realizar la comprobación pertinente entre todos los valores, y asignar a la variable el valor que cumpla la condición.

Si te fijas tienes inicializado a 0 los menores. No tiene sentido tener a 0 los menores en el momento de comprobar el menor.
En línea

Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".
sakura_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Hacer una lista con arreglos en Java
« Respuesta #5 en: 16 Noviembre 2010, 23:12 pm »

Listo, ya calcula el mayor y el menor. Gracias  ;D

Para terminar, solo debo poner en orden a los vendedores de acuerdo al numero de sus ventas. Creo que para mas facil debi haber hecho una clase unicamente de los productos como me lo habian dicho antes, pero con lo tengo, creen que se pueda hacer algo?

Esto hasta ahora: (El objeto "vendedormas" era para tratar de calcular eso)

Código:
import java.io.*;
 
 class tablaproduc {
    InputStreamReader isr = new InputStreamReader (System.in);
      BufferedReader flujoE = new BufferedReader (isr);
String vend[] = new String [5];
int prod[][] = new int [5][3];
float totv []=new float[5];
float mayor[] = new float[5];
float menor[]= new float[5];
float prodt[] = new float [3];
 
int x, z;
float aux1=0;

 
public tablaproduc(){
for (x=0; x<5; x=x+1){
vend[x]="";

 
for (z=0; z<3; z=z+1){
prod[x][z]=0;
prodt[z]=0;
}
 
totv[x]=0;
mayor[x]=0;
menor[x]=x;

}
}
 
public void burbuja(){
    String tempvend="";
    int tempprod=0, pasada=0;
    float temptotv;
    float tempmenor;
 
    for (pasada=1;pasada<5; pasada=pasada+1){
       for (x=0; x<4; x=x+1){
       for (z=0; z<2; z=z+1){
 
               tempvend=vend[x];
               tempprod =prod[x][z];
               temptotv=totv[x];
               tempmenor=menor[x];

               vend[x]=vend[x+1];
               prod[x][z]=prod[x][z+1];
               totv[x]=totv[x+1];
               menor[x]=menor[x+1];
 
               vend[x+1]=tempvend;
               prod[x][z+1]=tempprod;
               totv[x+1]=temptotv;
               menor[x+1]=tempmenor;
 
           }
           }
 
    }
 
   }
 
public void muestra (){
 
    System.out.println("Datos de ventas:");
 
    for (x=0; x<5; x=x+1){
    for (z=0; z<3; z=z+1){
    System.out.println(vend[x]+"  "+prod[x][z]);   
 
    }
    }
    for (x=0; x<5; x=x+1){
    System.out.println("\n"+"El total de ventas de"+" "+vend[x]+" "+"es de"+"\n"+totv[x]);
    System.out.println("\t"+"Su producto mas vendido es:"+mayor[x]);
    System.out.println("\t"+"El producto menos vendido es:"+menor[x]);
 
   }
for (x=0; x<5; x=x+1){

 
 System.out.println("El producto"+" "+vend[x]+" "+"fue vendido un total de");
 
 }
  System.out.println("\t"+"El orden de los vendedores, de acuerdo a sus ventas, es el siguiente:");
 
 
    for (x=0; x<5; x=x+1){
        System.out.println(vend[x]+totv[x]);
       
   
     
   }
 }

 
public void calcularmayor(){
 
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
if(prod[x][z] > mayor[x]){
mayor[x] = prod[x][z];
}
}
}
}
 
public void calcularmenor(){
 
for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
if(prod[x][z] < menor[x]){
menor[x] = prod[x][z];
}
}
}
}
 

public void vendedormas(){

for (x=0; x<5; x=x+1){
for (z=0; z<3; z=z+1){
if (totv[x]<totv[z]){
aux1=totv[x];
totv[x]=totv[z];
totv[z]=aux1;
}
}
}
}


 
public void captura (){
 
for(x=0;x<5;x=x+1){
try {
System.out.println("Ingrese nombre de vendedor:");
vend[x]=flujoE.readLine();
for(z=0;z<3;z=z+1){
System.out.println("Ingrese el producto:");
prod[x][z]=Integer.parseInt(flujoE.readLine());
totv[x]+=(float)(prod[x][z]);



}
}catch(IOException e) {}
}
}
}
 
/**
 *
 * @author sakura
 */
public class proyecto {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     tablaproduc datos= new tablaproduc();
         datos.captura();
         datos.calcularmayor();
         datos.calcularmenor();         
         datos.muestra();
         datos.burbuja();
 
     // TODO code application logic here
    }
 
}
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Hacer una lista con arreglos en Java
« Respuesta #6 en: 17 Noviembre 2010, 22:26 pm »

Una pregunta, porque hacias z hasta 3 en el segundo bucle? Yo lo modifique asi, por ejemplo :)

Código
  1. public void vendedormas(){
  2.  for (x=0; x<5; x++){
  3.      for (z=x; z<5; z++){
  4.          if (totv[x]<totv[z]){
  5.              aux1=totv[x];
  6.              totv[x]=totv[z];
  7.              totv[z]=aux1;
  8.          }
  9.      }
  10.  }
  11. }
  12.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programacion en java con arreglos
Java
tav 4 3,668 Último mensaje 30 Marzo 2012, 01:46 am
por Debci
COMO DECLARAR ARREGLOS EN JAVA
Java
jrkikey 3 3,032 Último mensaje 27 Noviembre 2012, 09:34 am
por тαптяα
Ayuda con arreglos en java.
Java
iAlexisan 3 2,238 Último mensaje 8 Diciembre 2015, 02:30 am
por iAlexisan
[C] Explicación de cómo hacer arreglos multidimensionales dinámicos
Programación C/C++
eenube 1 2,206 Último mensaje 15 Marzo 2016, 18:41 pm
por MAFUS
java pregunte sobre una lista. urgente!
Java
ocarro 1 2,632 Último mensaje 12 Julio 2017, 16:47 pm
por Zune528
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines