Foros del Web » Programación para mayores de 30 ;) » C/C++ »

array de strings sin repetir

Estas en el tema de array de strings sin repetir en el foro de C/C++ en Foros del Web. Hola colegas del programming! Resulta que tengo que resolver un problemilla con strings pero no le veo la solucion por ninguna parte a esto. Partiendo ...
  #1 (permalink)  
Antiguo 05/12/2012, 17:37
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
array de strings sin repetir

Hola colegas del programming!
Resulta que tengo que resolver un problemilla con strings pero no le veo la solucion por ninguna parte a esto.
Partiendo de un texto contenido en un array necesito crear una array de struct en el que en cada elemento del struct se almacene la palabra y el numero de veces que se repite en el texto. Tal que asi:

struct palabra
{
public string word; //palabra
public int num; //numero de veces que se repite la palabra
}

De tal forma que si tenemos el siguiente array (ya formateado para que no haya . ni ,)

Hola soy edu feliz navidad soy edu y te deseo feliz navidad

La salida deberia de ser:

1 hola
2 soy
2 edu
2 feliz
2 navidad
1 y
1 te
1 deseo

Agradeceria mucho si alguien me echase una mano ya que me he quedado muy trabado en este paso, se que suena facil de resolver pero no se por donde cojerlo.
Muchas gracias,

Saludos
  #2 (permalink)  
Antiguo 06/12/2012, 10:03
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 12 años
Puntos: 10
Respuesta: array de strings sin repetir

en una frase cada palabra le sigue con un espacio en blanco.

Entonces, suponiendo que la frase no empieza con espacio en blanco

vas chequeando letra por letra y cuando encuentra un espacio en blanco se guardan esas letras en una palabra de la estructura supongo.
y otra vez, claro que para el último habría que chequear si le sigue el '\0'.

Y cada vez que almacenes la nueva palabra en la estructura, tendrías que chequear todas las anteriores para ver si son iguales y si son iguales no se crea una nueva estructura si no que le sumas a num.

Eso se me ocurre, espero haya algo más rápido y eficiente
  #3 (permalink)  
Antiguo 06/12/2012, 13:09
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: array de strings sin repetir

No se si será mas rapido y eficiente pero puedes tokenizar por espacios, en cada vuelta sacas una palabra, la comparas con la lista y si está incrementas el contador, y si no está pues la añades.

Para tokenizar con strtok es muy facil pero necesitas usar una copia del c_str de la frase (o si piensas usar esta funcion en multithreads tendras que usar strtok_r que es la verison reentrante que no guarda datos sino que te los retorna ya preparados para la siguiente vuelta); la otra opcion es usar istringstream con getline indicandole que quieres leer hasta los espacios. No he probado la segunda forma pero debería de funcionar.

Saludos
vosk

Etiquetas: int, repetir, string, strings
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 09:00.