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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema para contar elementos de un vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema para contar elementos de un vector  (Leído 7,410 veces)
_SainT_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Problema para contar elementos de un vector
« en: 23 Agosto 2011, 19:42 pm »

Hola gente, me han dado un TP, y necesito ayuda en un punto. Dice asi :


3. Informar la cantidad total de metros construidos que hay en cada una de las zonas.

Es un trabajo sobre unas viviendas, cada vivienda es un objeto , y el vector es un vecto de objetos. El problema es qe las zonas, (son numeros del 1 al 20), se pueden repetir en cualquier lado, y no se como sumar la cantidad de metros, relacionada a la misma zona. Probe con hacer dos for anidados, pero se me repite muchas veces, porque compara todos los elementos con todos los elementos, no se como contar elementos distintos, ni elementos que se repiten. Aca les dejo el codigo de como es el objeto vivienda, y el metodo para cargar . No hace falta que me escriban un codigo, solo necesitaria saber como hacer para evitar ese error o un pseudocodigo. Muchas gracias :)


Código
  1. public class Vivienda
  2. {
  3.    private int numero;
  4.    private int tipo;
  5.    private int zona;
  6.    private float metrosConstruidos;
  7.    private float preciom2;
  8.  
  9.    public Vivienda(int a, int b, int c, float d, float e)
  10.    {
  11.        numero=a;
  12.        tipo=b;
  13.        zona=c;
  14.        metrosConstruidos=d;
  15.        preciom2=e;
  16.    }
  17.  
  18.    public int getZona()
  19.    {
  20.        return zona;
  21.    }
  22.    public float getMetrosConstruidos()
  23.    {
  24.        return metrosConstruidos;
  25.    }
  26.    public int getTipo()
  27.    {
  28.        return tipo;
  29.    }
  30.    public float getPreciom2()
  31.    {
  32.        return preciom2;
  33.    }
  34.                    //este es el objeto vivienda,
  35.  
  36.  
  37. public class RegistroVivienda
  38. {
  39.    private Vivienda vec[];
  40.  
  41.    public RegistroVivienda(int tamaño)
  42.    {
  43.        vec=new Vivienda[tamaño];
  44.    }
  45.  
  46.    public void CargarDatos()
  47.    {
  48.        int number;
  49.        int tipo;
  50.        int zone;
  51.        float metros;
  52.        float precio;
  53.        for(int i=0;i<vec.length;i++)
  54.        {
  55.            System.out.println("Ingrese el numero de vivienda");
  56.            number=In.readInt();
  57.            System.out.println("Ingrese el tipo de vivienda: 0/1/2");
  58.            tipo=In.readInt();
  59.            if(tipo<0 || tipo>=3)
  60.            {
  61.                System.out.println("El tipo ingresado no es correcto");
  62.                break;
  63.            }
  64.            System.out.println("Ingrese la zona");
  65.            zone=In.readInt();
  66.            System.out.println("Ingrese los metros cuadrados de la vivienda");
  67.            metros=In.readFloat();
  68.            System.out.println("Ingrese el precio por metro cuadrado");
  69.            precio=In.readFloat();
  70.            vec[i]=new Vivienda(number,tipo,zone,metros,precio);
  71.        }
  72.    }
  73. }
  74. // aca va el metodo que necesito.
  75.  
  76.  
  77.  
  78.  
  79.  


« Última modificación: 23 Agosto 2011, 19:46 pm por _SainT_ » En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Problema para contar elementos de un vector
« Respuesta #1 en: 23 Agosto 2011, 20:28 pm »

Pues supongo que tendrías que recorrer el array de viviendas, y para cada zona (dices que van del 1 al 20) ver qué viviendas están en dicha zona y coger sus metros y sumarlos en una variable.

Código
  1. public int[] getMetros(){
  2.    int[] resultado = new int[21];
  3.    for(int i = 1;i < 21;i++)
  4.        resultado[i] = 0;
  5.    for(int i = 0;i < vec.length();i++){
  6.        int aux = vec[i].getZona();
  7.        if(aux>0 && aux<21)
  8.            resultado[aux] += vec[i].getMetrosConstruidos();
  9.    }
  10.    return resultado;
  11. }

En el array resultado vamos a guardar los metros construidos que tiene cada zona. Lo he construido con indice 21 para poder almacenar los datos desde la posición 1 (que representará la zona 1) hasta la posición 20 (que representará la zona 20). El primer bucle es para inicializar las posiciones del array . El siguiente bucle lo que hace es recorrer el array vec, y para cada vivienda coge su zona, si la zona es un valor correcto entonces se va al array resultado e incrementa los metros de esa zona.

No se si era a esto a lo que te referías, si no es así, comentalo.

Saludos.


En línea

_SainT_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema para contar elementos de un vector
« Respuesta #2 en: 23 Agosto 2011, 20:42 pm »

Ahora lo pruebo y te respondo. Lo que no se , (debe ser porque no me doy cuenta), si por ejemplo , la zona 2 se repite en al posicion 0 5 y 95 del vector, el metodo guardara los metros cuadrados de la zona 2 de la posicion 0 5 y 95, en una sola posicion del nuevo vector resultado.

El codigo sirve cuando tenes numeradas las zonas del 1 al 20 , pero yo lei mal la consigna, dice que son 20 zonaas distintas, pero puede ser cualqueir numero, mientras sean 20 numeros distintos, por eso no me sale, igual muchas gracias :)
« Última modificación: 23 Agosto 2011, 21:05 pm por _SainT_ » En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Problema para contar elementos de un vector
« Respuesta #3 en: 24 Agosto 2011, 14:20 pm »

Hola, bueno quiero aclarar que recien ayer empece con Java  :xD asi que se me ocurrio pasar por este foro e ir leyendo post com para reforzar lo que eh leido. Creo que tenes un error sintactico:

Código
  1. public class RegistroVivienda
  2. {
  3.    private Vivienda vec[];
  4.  
  5.    public RegistroVivienda(int tamaño)
  6.    {
  7.        vec=new Vivienda[tamaño];
  8.    }

Si pretendes declarar un array de typo 'Vivienda' deberia ser:

Código
  1. private Vivienda[] vec;

Ademas no te recomiendo usar letras no ascii ('ñ' por ejemplo') en nombres de variables... ;)

Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
_SainT_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema para contar elementos de un vector
« Respuesta #4 en: 24 Agosto 2011, 20:02 pm »

No amigo, no es un error sintactico, se puede colocar los [] de ambas formas :D, puede que tengas razon con lo de las ñ, pero por el momento funciona xD.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines