Foros del Web » Programación para mayores de 30 ;) » Java »

vectores en JAVA

Estas en el tema de vectores en JAVA en el foro de Java en Foros del Web. Buenas necesito ayuda, estoy haciendo un proyecto y necesito crear dos vectores de puntero en java y hacer la estructura para que haga el recorrido ...
  #1 (permalink)  
Antiguo 11/04/2011, 06:23
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación vectores en JAVA

Buenas necesito ayuda, estoy haciendo un proyecto y necesito crear dos vectores de puntero en java y hacer la estructura para que haga el recorrido del vector y no declarar una variable por cada letra, sino un vector para todo el abecedario.
Va en relacion a un proyecto que tengo que le meto una palabra por teclado y me devuelve por pantalla el numero de veces que se repite cada caracter. Ejemplo

Agua
A=2
G=1
U=1

Me podeis ayudar por favor
  #2 (permalink)  
Antiguo 11/04/2011, 06:38
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: vectores en JAVA

¿Que es lo que tienes? ¿Que es lo que no sabes hacer?
  #3 (permalink)  
Antiguo 11/04/2011, 07:06
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: vectores en JAVA

Cita:
Iniciado por Heimish2000 Ver Mensaje
¿Que es lo que tienes? ¿Que es lo que no sabes hacer?

Tengo exo el main de esta manera
public class Main {
public static void main(String alfabeto[]) throws IOException
{
BufferedReader lectura = new BufferedReader(new InputStreamReader(System.in));
String frase;


System.out.println("Ponga una frase por favor: ");
frase = lectura.readLine();




System.out.println("El texto contiene "+ contar(frase,'a') +" veces la letra a");
// asi hasta la letra z

}

public static int contar(String texto, Character letra) {

return texto.replaceAll("[^"+letra+"]","").length();

}
}

lo que no se hacer es implementar dichos vectores de punteros para que hagan el recorrido.
  #4 (permalink)  
Antiguo 11/04/2011, 07:30
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: vectores en JAVA

Algo así (no es exacto, corrige tú los errores)

Código Java:
Ver original
  1. char letras[]={a,b,c,...,x,y,z};
  2. for (int i=0; i<letras.length; i++){
  3. System.out.println("El texto contiene "+ contar(frase,letras[i]) +" veces la letra " + letras[i]);
  4. }
  #5 (permalink)  
Antiguo 11/04/2011, 08:30
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: vectores en JAVA

Cita:
Iniciado por Heimish2000 Ver Mensaje
Algo así (no es exacto, corrige tú los errores)

Código Java:
Ver original
  1. char letras[]={a,b,c,...,x,y,z};
  2. for (int i=0; i<letras.length; i++){
  3. System.out.println("El texto contiene "+ contar(frase,letras[i]) +" veces la letra " + letras[i]);
  4. }

Hola de nuevo, gracias por responder, es solo eso? me refiero, tengo que declarar una clase vector o lo puedo integrar dentro del mismo main? y claro son dos vectores uno que cuenta la frecuencia de veces que se repite el caracter de 0 a 9 y otro vector de 10 enlaces que apunta si es necesario a una lista simplemente encadenada con las palabras almacenadas.
  #6 (permalink)  
Antiguo 11/04/2011, 08:39
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: vectores en JAVA

A ver, obviamente tienes que tener un main. Declaras el vector en el main y sistituyes tu

System.out.println("El texto contiene "+ contar(frase,'a') +" veces la letra a");
// asi hasta la letra z

Por el for que te puse

Si quieres guardar la frecuencia en vez de unicamente imprimirla, create una estructura con un char que sea la letra y un int que sea el contador y el vector que te tienes que definir es del tipo de la estructura.
  #7 (permalink)  
Antiguo 12/04/2011, 06:33
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: vectores en JAVA

Cita:
Iniciado por Heimish2000 Ver Mensaje
A ver, obviamente tienes que tener un main. Declaras el vector en el main y sistituyes tu

System.out.println("El texto contiene "+ contar(frase,'a') +" veces la letra a");
// asi hasta la letra z

Por el for que te puse

Si quieres guardar la frecuencia en vez de unicamente imprimirla, create una estructura con un char que sea la letra y un int que sea el contador y el vector que te tienes que definir es del tipo de la estructura.
Hola Heimish200, gracias por responder y gracias por lo que me dijiste, ha funcionado y es mejor que escribir tdo muchas veces, solo que tengo un pequeño problema, cuando escribo por teclado "hola" me devuelve todo el abecedario con las ocurrencias y desearia que parara en la letra mas alta es decir, si la palabra es
"hola"
que parara en la letra l y q no siguiera hasta la z, como podria hacer eso?

Gracias
  #8 (permalink)  
Antiguo 12/04/2011, 07:43
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: vectores en JAVA

Puedes hacer un if poniendo que sólo te muestre las letras que tengan alguna aparición:

Código Java:
Ver original
  1. for (int i=0; i<letras.length; i++){
  2. if (contar(frase,letras[i]) > 0)
  3. System.out.println("El texto contiene "+ contar(frase,letras[i]) +" veces la letra " + letras[i]);
  4. }

Para optimizarlo y no llamar dos veces a la misma función, podemos guardar en una variable su resultado.

Código Java:
Ver original
  1. int c;
  2. for (int i=0; i<letras.length; i++){
  3. c = contar(frase,letras[i]);
  4. if (c > 0)
  5. System.out.println("El texto contiene "+ c +" veces la letra " + letras[i]);
  6. }
  #9 (permalink)  
Antiguo 12/04/2011, 08:15
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: vectores en JAVA

Cita:
Iniciado por Heimish2000 Ver Mensaje
Puedes hacer un if poniendo que sólo te muestre las letras que tengan alguna aparición:

Código Java:
Ver original
  1. for (int i=0; i<letras.length; i++){
  2. if (contar(frase,letras[i]) > 0)
  3. System.out.println("El texto contiene "+ contar(frase,letras[i]) +" veces la letra " + letras[i]);
  4. }

Para optimizarlo y no llamar dos veces a la misma función, podemos guardar en una variable su resultado.

Código Java:
Ver original
  1. int c;
  2. for (int i=0; i<letras.length; i++){
  3. c = contar(frase,letras[i]);
  4. if (c > 0)
  5. System.out.println("El texto contiene "+ c +" veces la letra " + letras[i]);
  6. }

Muchas Gracias Heimish2000, ahora si jeje, mira tengo otra dudilla, a ver si me puedes ayudar, mira va relacionado con el mismo ejercicio. tengo que crear dos vectores de puntero y hacer la estructura para que haga el recorrido del vector. uno de ellos corresponde a la frecuencia de 0-9 de dicho caracter q se repite, y el otro un vector de 10 enlaces q apunta si es necesario a una lista simplemente encadenada con las palabras almacenadas. no se si me has entendido

la cosa es eso lo puedo hacer dentro del mismo main? y como ? he leido como se declara un vector

Vector vector =new Vector();
vector.add();
vector.add();
pero estoy confuso
  #10 (permalink)  
Antiguo 12/04/2011, 08:38
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: vectores en JAVA

Si se puede hacer en el main. Creas el Vector (aunque mejor un ArrayList) y vas añadiendo las palabras que quieres.

No entiendo exactamente lo que tienes que hacer y menos lo que no sabes hacer
  #11 (permalink)  
Antiguo 12/04/2011, 08:49
 
Fecha de Ingreso: febrero-2011
Ubicación: españa
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: vectores en JAVA

Cita:
Iniciado por Heimish2000 Ver Mensaje
Si se puede hacer en el main. Creas el Vector (aunque mejor un ArrayList) y vas añadiendo las palabras que quieres.

No entiendo exactamente lo que tienes que hacer y menos lo que no sabes hacer
Mira te comento, porque a lo mejor diciendotelo suelto es posible que no me sepa explicar, este es el enunciado del problema que tengo que hacer:

--- Desarrollar un TAD (clase) en java que implemente un arbol jd, se emplea cuando la información almacenada en los nodos tiene mas de una dimensión, en nuestro caso se almacenaran ristras de caracteres (alfabeto español), asi las dimensiones seran todos y cada uno de los caracteres del alfabeto, y para cada ristra almacenada, el valor de cada dimensión sera la frecuencia de aparición de cada caracter. En el arbol hay dos tipos de nodos, unos internos, que discriminan para la ordenación y que almacenan el caracter empleado para discriminar y un vector de 10 enlaces, correspondiendo a las frecuencias de 0 a 9 de dicho caracter y un vector de 10 enlaces que apuntan, si es necesario, a una lista simplemente encadenada con las palabras almacenadas ( nodos de información).

El tema es que un compañero me comento que tenia que hacer lo siguiente:

--- Primero haz un programa que te cuente las letras de una palabra y te diga qué palabras son.

---- Luego hay que hacer dos estructuras y declarar dos vectores de punteros. En Java los punteros no existen, así que son clases.

---- El resto debes crear dos vectores de puntero y hacer la estructura para que haga el recorrido del vector. Por cierto, no declares una variable por cada letra, sino un vector para todo el abecedario.

----- Crea una estructura NODO con dos NODOS uno interno y otro externo donde el interno va a la siguiente letra a no ser que sea la letra más alta y el nodo externo que apunta a una lista por ejemplo donde almacena las palabras dependiendo de su frecuencia.


Lo he estado haciendo por partes, aver si asi lo saco, y lo primero digamos que lo tengo pero no se seguir, por eso te pido ayuda. Quizas asi ahora entiendas por donde voy encaminado, espero no haberte asustado mucho con todo esto.

Saludos y muchas gracias nuevamente

Etiquetas: vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.