Autor
|
Tema: Problema para contar elementos de un vector (Leído 7,410 veces)
|
_SainT_
Desconectado
Mensajes: 3
|
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 public class Vivienda { private int numero; private int tipo; private int zona; private float metrosConstruidos; private float preciom2; public Vivienda(int a, int b, int c, float d, float e) { numero=a; tipo=b; zona=c; metrosConstruidos=d; preciom2=e; } public int getZona() { return zona; } public float getMetrosConstruidos() { return metrosConstruidos; } public int getTipo() { return tipo; } public float getPreciom2() { return preciom2; } //este es el objeto vivienda, public class RegistroVivienda { private Vivienda vec[]; public RegistroVivienda(int tamaño) { vec=new Vivienda[tamaño]; } public void CargarDatos() { int number; int tipo; int zone; float metros; float precio; for(int i=0;i<vec.length;i++) { System. out. println("Ingrese el numero de vivienda"); number=In.readInt(); System. out. println("Ingrese el tipo de vivienda: 0/1/2"); tipo=In.readInt(); if(tipo<0 || tipo>=3) { System. out. println("El tipo ingresado no es correcto"); break; } System. out. println("Ingrese la zona"); zone=In.readInt(); System. out. println("Ingrese los metros cuadrados de la vivienda"); metros=In.readFloat(); System. out. println("Ingrese el precio por metro cuadrado"); precio=In.readFloat(); vec[i]=new Vivienda(number,tipo,zone,metros,precio); } } } // aca va el metodo que necesito.
|
|
« Última modificación: 23 Agosto 2011, 19:46 pm por _SainT_ »
|
En línea
|
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
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. public int[] getMetros(){ int[] resultado = new int[21]; for(int i = 1;i < 21;i++) resultado[i] = 0; for(int i = 0;i < vec.length();i++){ int aux = vec[i].getZona(); if(aux>0 && aux<21) resultado[aux] += vec[i].getMetrosConstruidos(); } return resultado; }
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
Mensajes: 3
|
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
Mensajes: 2.397
JS/Node developer
|
Hola, bueno quiero aclarar que recien ayer empece con Java 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: public class RegistroVivienda { private Vivienda vec[]; public RegistroVivienda(int tamaño) { vec=new Vivienda[tamaño]; }
Si pretendes declarar un array de typo 'Vivienda' deberia ser: 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
Mensajes: 3
|
No amigo, no es un error sintactico, se puede colocar los [] de ambas formas , puede que tengas razon con lo de las ñ, pero por el momento funciona xD.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema al usar la función fscanf para leer datos en un vector.
Programación C/C++
|
dvc
|
4
|
5,136
|
15 Abril 2012, 22:16 pm
por dvc
|
|
|
Problema con librería vector.
Programación C/C++
|
bemone
|
3
|
2,904
|
19 Mayo 2012, 20:09 pm
por RyogiShiki
|
|
|
Ayuda para intercalar elementos de un arreglo en un tercer vector dado 2 vectore
Programación General
|
sebastian2012
|
0
|
7,620
|
23 Julio 2012, 02:56 am
por sebastian2012
|
|
|
Contar elementos de un vector
Programación C/C++
|
estudiante_1
|
3
|
8,183
|
18 Enero 2016, 15:58 pm
por Yoel Alejandro
|
|
|
problema para imprimir un vector en el main (java)
Dudas Generales
|
dam_daniel
|
0
|
2,104
|
15 Marzo 2019, 17:31 pm
por dam_daniel
|
|