Generar precios en una matriz aleatoriamente

Necesitaría saber si me podes ayudar a generar una matriz de 4 x 6 que en ella tenga precios... Yo taba tratando de generar esos precios aleatoriamente con el método ramdon.. Pero no me sale:S...

1 respuesta

Respuesta
1
Claro que te ayudo, pero prefiero que trabajemos sobre código que tu generes, te invito a pegarlo aquí, de esa manera, otros que tengan la misma duda, tomen el ejemplo, y te servirá porque iras desarrollando tu propio estilo de programación, yo te guiare por tus dudas, pero necesito ver tu código.
En una compañía aérea se desea un programa para manejar información referida a los vuelos disponibles. Para eso, cargar por teclado un vector de n objetos que representan a esos vuelos disponibles. Cada objeto debe incluir los atributos siguientes: código del vuelo (es una cadena que identifica al vuelo), más otro atributo con un número que identifica el tipo de vuelo del que se trata (se trata de 4 posibles tipos, numerados desde el cero hasta el tres, para especificar si el vuelo es charter, privado, gubernamental, etc.) En otro atributo guardar un código para identificar la provincia a la que va el vuelo (los posibles valores son 6, y se identifican con un número entre cero y cinco). Se debe cargar (o generar de manera fija) además una matriz, en la cual cada fila representa uno de los 4 tipos de vuelo, y cada columna una de las seis provincias de destino posible. En cada componente de la matriz, se almacena el precio del pasaje para el vuelo respectivo. Debe definir una clase Aerolínea, en la cual se incluya el vector de vuelos y la matriz indicada, además del nombre de la aerolínea
Yo toy haciendo el vector de objetos.. ya esta listo ese.. pero no se como hacer el tema de la matriz de 4 x 6 float para los precios.. y esos precios se tienen que generar aleatoriamente... yo acá abajo t pego los códigos fuente de mi programa ya echo.. no ta terminado el código.. también necesito ayuda para poder seguir con el trabajo ya que lo tengo que entregar el viernes que viene :S
public class Aerolineas
{
    private Vuelo vuelos[];
    private Precios precio[][];
    private String nombre;
    public Aerolineas()
    {
        nombre = "U.T.N Viajes";
        vuelos = new Vuelo[5];
        precio = new Precios[4][6];
    }
    public Aerolineas(int n)
    {
        nombre = "U.T.N Viajes";
        vuelos = new Vuelo[n];
        precio = new Precios[4][6];
    }
    public Aerolineas(String tit, int n)
    {
        nombre= tit;
        vuelos = new Vuelo[n];
        precio = new Precios[4][6];
    }
    public int getCantidadVuelos()
    {
        return vuelos.length;
    }
    public Vuelo getVuelo(int i)
    {
        return vuelos;
    }
    public void setVuelo(Vuelo vue, int i)
    {
        if (vue != null){ vuelos=vue;}
    }
    public String toStringConteo()
    {
        String r = "Conteo por tipo de vuelo y provincia de destino:";
        for (int i = 0; i < precio.length; i++)
        {
            r = r + "\n\tTipo: " + i;
            for (int j = 0; j < precio.length; j++)
            {
                   r = r + "\n\t\tProvincia: " + j + " - Precios: " + precio[j];
            }
        }
        return r;
    }
    public void generarPreciosAleatorios()
    {
        for( int p = 0; p < 4; p++)
        {
            for( int m = 0; m < 6; m++)
            {
                float pre = (float)Math.random() * 100;
                precio

[m] = new Precios(pre);
            }
        }
    }
    public String toString()
    {
        String r = "Aerolinea: " + nombre + "\n{";
        for(int i = 0; i < vuelos.length; i++)
        {
            r = r + "\n\t" + vuelos.toString();    
        }
        r = r + "\n}";
        return r;
    }
}
public class Vuelo
{
    private String codigo;
    private int tipo; /* tipo de 0 a 3*/
    private int provincia; /* provincia de 0 a 5*/
    public Vuelo()
    {
    }
    public Vuelo(String cod, int tip, int prov)
    {
        codigo=cod;
        tipo=tip;
        provincia=prov;
    }
    public String getCodigo()
    {
        return codigo;
    }
    public int getTipo()
    {
        return tipo;
    }
    public int getProvincia()
    {
        return provincia;
    }
    public void setCodigo(String cod)
    {
        codigo = cod;
    }
    public void setTipo(int tip)
    {
        tipo = tip;
    }
    public void setPronvincia(int prov)
    {
        provincia = prov;
    }
    public String toString()
    {
        String r = "Codigo de vuelo: " + codigo;
        r += "\tTipo de vuelo: " + tipo;
        r += "\tProvincia: " + provincia;
        return r;
    }
}
public class Consola
{
    /*
     * 1) Todos los métodos de esta clase son estáticos, y por lo tanto pueden ser invocados sin tener que crear objetos de la clase. Es
     * suficiente con nombrar la clase al invocar el método:   int x = Consola.readInt();
     */
    /**
     * Lee un string desde teclado. El string termina con un salto de linea
     * @return el string leido (sin el salto de linea)
    */
    public static String readLine()
    {
       int ch;
       String r = "";
       boolean done = false;
       while (!done)
       {
        try
        {
            ch = System.in.read();
            if (ch < 0 || (char)ch == '\n') { done = true; }
            else
            {
                 if ((char)ch != '\r') { r = r + (char) ch; }
            }
        }
        catch(java.io.IOException e)
        {
            done = true;
        }
       }
       return r;
    }
    /**
     * Lee un integer desde teclado. La entrada termina con un salto de linea
     * @return el valor cargado, como un int
     */
    public static int readInt()    
    {
       while(true)
       {
          try
          {
              return Integer.parseInt(readLine().trim());
          }
          catch(NumberFormatException e)
          {
              System.out.println("No es un integer. Por favor, pruebe otra vez!");
          }
       }
    }
    /**
     * Lee un double desde teclado. La entrada termina con un salto de linea
     * @return el valor cargado, como un double
     */
    public static double readDouble()
    {
       while(true)
       {
           try
           {
              return Double.parseDouble(readLine().trim());
           }
           catch(NumberFormatException e)
           {
              System.out.println("No es un flotante. " + "Por favor, pruebe otra vez!");
           }
       }
    }
}
public class Principal
{
    private static Aerolineas a;
    public static void main (String args[])
    {
        a = new Aerolineas();
        int op;
        do
        {
            System.out.println("Menú Principal - ");
            System.out.println("\t1. Cargar datos (generar aleatoriamente)");
            System.out.println("\t2. Mostrar datos");
            System.out.println("\t3. Salir: ");
            System.out.print("\nIngrese la opcion deseada: ");
            op=Consola.readInt();
            switch(op)
            {
                case 1: a.generarPreciosAleatorios();
                        break;
                case 2: a.toString();
                        break;
                case 3: break;
                default: System.out.print("No hay opción con ese número!!");
            }
        }
        while(op!=3);
    }
}

Supongo que tu método para crear la matriz de precios es este:
public void generarPreciosAleatorios()
    {
        for( int p = 0; p < 4; p++)
        {
            for( int m = 0; m < 6; m++)
            {
                float pre = (float)Math.random() * 100;
                precio

[m] = new Precios(pre);
            }
        }
    }
Si es así, bueno, pues comencemos por el lado de que no tienes una clase Precios... como sea no la necesitas, solo create un arreglo de Objetos, para que le puedas meter cualquier cosa, ¿ok?
Después tenemos que estas asignando a tu arreglo bidimensional tu objeto Precio... a lo cual seria más fácil meterle un objeto Float, que lleve en su constructor la previa operación que estas realizando... y para sacarlo por consola, pues solo crea otro método que recorra tu matriz... podría ser:
public void generarPreciosAleatorios()
    {
        for( int p = 0; p < 4; p++)
        {
            for( int m = 0; m < 6; m++)
            {
                float f = (float)Math.random() * 100;
                precio

[m] = new Float(f);
            }
        }
    }
Y para recorrerlo, pues :
public void imprimirPreciosAleatorios()
    {
        for( int p = 0; p < 4; p++)
        {
            for( int m = 0; m < 6; m++)
            {
                System.out.print (precio

[m])
            }
           System.out.println();
        }
  }

public class Precios
{
    private float precios;
    public Precios(float pre)
    {
        precios = pre;
    }
    public Precios()
    {
    }
    public float getPrecios()
    {
        return precios;
    }
    public void setPrecios(float pre)
    {
        precios=pre;
    }
    public String toString()
    {
        String r= "Precios: "+precios;
        return r;
    }
}
Si m olvidaba.. ahí ta la clase precios.. .la verdad qno entendí mucho qdigamos lo qm dijiste:s.. y toy tratando de ver como hacer para hacerlo porque toy atrasado mal:S... gracias
Pues... ok, digamos que no es necesario que hagas una clase, solo para un tipo de dato... lo que veo que estas haciendo es algo así como Precios = Float ... y la clase Float te hace exactamente lo mismo que tu haces con tu clase Precios... entonces por eso digo que no es necesario que hagas una clase Precios para valores de tipo Float, espero haber sido más claro...
Con respecto al arreglo de Objetos... si tu quieres un arreglo de determinado tipo de dato, llámese String, Integer, Float, o alguna clase que tu crees (Vuelo por ejemplo) tienes que hacerlo de la siguiente forma
String s = new String[x][y]; donde X y Y son tus tamaños....pero si haces un arreglo de Object
Object arreglo = new Object[x][y];
Entonces puedes meter distintos tipos de datos, por eso te decía que hicieras tu arreglo de Object (Objetos, pues...)
Si si eso lo entendí.. más adelante lo voy a hacer en la clase principal.. pero ahora toy trabado en crear la matriz de tipo float de 4 x 6.. y que en ella se generen los precios aleatoriamente:s... eso es lo qm ta trabando x ahora
Va, puedes hacerlo más o menos así...
public void llenarMatrizAleatoriamente(){
float [ ][ ] precios = new float[4][6];
    for (int i =0; i<4;i++){
        for (int j=0;i<6;j++){
                 precios [j] = (float) (Math.random( ) * 1000);
            }
    }
}
Con este método, debería de funcionar el rellenado del arreglo...
Me ha sido de gran utilidad. Ya que con ese ultimo método lo pude solucionar.. aunque le cambie algunas cosas.. ¿hay algún lado donde pueda compartir mis códigos fuente?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas