• Viernes 8 de Noviembre de 2024, 13:35

Autor Tema:  Es Sobre Cadenas Y Strings  (Leído 3071 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Es Sobre Cadenas Y Strings
« en: Jueves 12 de Abril de 2007, 13:26 »
0
Holas,mirar mi problema es el siguiente..yo primero que todo tengo que leer un fichero y mi funcion me tiene que hacer lo siguiente:
mi fichero:

hola guapo hola
hola guapa

el resultado tendria que ser:

hola guapo
       guapa

es decir las palabras repetidas...no tienen que salir...

me podeis ayudar?

teniendo en cuenta..que todas las palabras(no repetidas) las guardo en un vector de palabras,es decir en mi caso,en el vector de palabras tendria " hola guapo guapa",

Un saludo,espero respuesta.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #1 en: Jueves 12 de Abril de 2007, 13:49 »
0
Sino te interesa el orden (que seria alfabetico probablemente) una solucion muy simple y que basicamente implica que el trabajo sea efectuado por parte de la STL es usar un set en vez de un vector.

De otra manera recorre el vector con un iterator y comproba que no exista ya una cadena en el mismo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #2 en: Lunes 16 de Abril de 2007, 12:04 »
0
ya..lo siento,,pero es que no distes respuesta a mi problema.No me dijistes nada en concreto Eternal Idol,no te molestes,pero es asi,me has dado solución o ayuda a la mayoria de mis problemillas,pero a este no,no te mosquees,,jejjeeje

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #3 en: Lunes 16 de Abril de 2007, 12:09 »
0
Cita de: "pacorubio77"
ya..lo siento,,pero es que no distes respuesta a mi problema.No me dijistes nada en concreto Eternal Idol,no te molestes,pero es asi,me has dado solución o ayuda a la mayoria de mis problemillas,pero a este no,no te mosquees,,jejjeeje
No me parece que sea cierto eso:
recorre el vector con un iterator y comproba que no exista ya una cadena en el mismo.

Eso es una respuesta concreta y es una forma de hacerlo, incluso te di otra opcion donde no tenes que hacer nada. Que no puedas implementar ninguna de las dos y necesites el codigo es otra historia totalmente diferente.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #4 en: Lunes 16 de Abril de 2007, 12:16 »
0
es que la cuestion es que tengo que hacerlo linea a linea,y te digo que las palabras las tengo almacenadas en un vector de palabras,me entiendes?si no me entiendes,tengo el codigo a mano,si quieres te lo muestro...no pasa nada,para mi no es ninguna molestia enseñarte el código.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #5 en: Lunes 16 de Abril de 2007, 13:08 »
0
Cita de: "pacorubio77"
es que la cuestion es que tengo que hacerlo linea a linea,y te digo que las palabras las tengo almacenadas en un vector de palabras,me entiendes?si no me entiendes,tengo el codigo a mano,si quieres te lo muestro...no pasa nada,para mi no es ninguna molestia enseñarte el código.
Que ahora tengas X no significa que sea lo adecuado y por eso te doy una opcion de usar otra cosa. Ademas te digo como hacerlo con lo que ya tenes pero parece que el que no entiende como hacerlo sos vos. Que tengas que hacerlo linea a linea da exactamente lo mismo, lo importante es que puedas determinar que hay en el vector para poder decidir si agregar o no nuevos elementos.

¿Sabes recorrer un vector? Se hace con un iterator, asi podes saber que elementos hay en el mismo. Si en vez de agregar directamente con push_back haces una funcion que recorra el vector y compare el elemento a agregar con los ya existentes podes agregar al vector una unica vez cada elemento.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #6 en: Lunes 16 de Abril de 2007, 13:14 »
0
si.yo entiendo lo que me dices,mira yo tengo un vector apariciones donde me dice cuantas veces está una palabra,pero conforme yo lo tengo echo,en la frase:

hola paco hola, "hola" esta dos veces,como podría hacer yo que solo me imprimiera la primera?,me entiendes?

es decir si yo tengo el siguiente fichero:

hola paco hola
hola loco

solo me imprimiera por pantalla:

hola paco
      loco

lo que quiero es que no se la idea,era para ver si me ayudabas..con dicha idea..,yo te digo lo que hago y las funciones que tengo.

Tengo una funcion que es buscarPalabra,que busca la palabra en mi vector de palabras y me dice la posicion en la que esta,

siesta=buscarpalabra(parametros)//me devuelve la posicion de donde está la palabra.

if(apariciones[siesta]=1 )
    cout<<palabra;

eso lo que hace es que si tengo :

hola paco
hola julio
//me lo hace bien,es decir porque hola aparece en lineas diferentes,,pero nada mas que tenga la palabra repetida en la misma linea me lo hace mal..me puedes ayudar?

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #7 en: Lunes 16 de Abril de 2007, 13:18 »
0
pero una nota muy importante,,y que creo que no tienes en cuenta...

esto que yo quiero hacer es una función de un programa..y el vector de palabras,cuando llego a esta opcion ya esta rellenado y el vector de apariciones tambien,,, es decir si yo tengo

hola paco hola  

mi vector de palabras ya tiene

hola
paco

y el vector de apariciones

2
1

es por si te sirve para ayudarme

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #8 en: Lunes 16 de Abril de 2007, 13:20 »
0
Con separar las palabras dentro de las lineas (strchr/strstr sirve para eso) antes de meterlas en el vector te alcanza.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #9 en: Lunes 16 de Abril de 2007, 13:22 »
0
Cita de: "pacorubio77"
pero una nota muy importante,,y que creo que no tienes en cuenta...

esto que yo quiero hacer es una función de un programa..y el vector de palabras,cuando llego a esta opcion ya esta rellenado y el vector de apariciones tambien,,, es decir si yo tengo
Dificilmente pueda tener en cuenta algo que desconozco ... pero sigo sin ver cual es el verdadero problema. ¿Quien se encarga de hacer eso y que haces vos exactamente? ¿Tratar de poner las palabras segun la linea?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #10 en: Lunes 16 de Abril de 2007, 13:27 »
0
y claro que se recorrer un vector,,mira te escribo mi código..para que veas que voy algo encaminado.vale?

tama1=linea.length();

for(m=0;m<tama1;m++){

     if (CaracterValido()==false) cout <<linea[m];
     else{
               string aux;int siesta,i_aux;
              i_aux=ExtraerPalabra(parametros....);devuelve la posicion donde acaba la palabra.
             siesta=BuscarPalabra(parametros....);busca la palabra en el vector de palabras y nos devuelve la posicion donde está en el vector de palabras.
              if (apariciones[siesta]==1) {
                    cout<<aux;
              }
              m=i_aux-1;              

           }

}

ahi estaría el codigo,,omita si no he definido algo,,es decir, si no he inicilializado algo,vale?haber si con esto me puedes ayudar

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #11 en: Lunes 16 de Abril de 2007, 13:48 »
0
¿Es necesario usar una lista que es para otra cosa? ¿No es mas facil hacer tu propia lista?

Podes empezar por borrar de tu misma linea todas las palabras repetidas ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #12 en: Lunes 16 de Abril de 2007, 13:55 »
0
Ese es mi problema,que no se implementarlo,es decir que no se como hacerlo,,por eso lo pregunto..no se como implementarlo en código.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #13 en: Lunes 16 de Abril de 2007, 13:57 »
0
Cita de: "pacorubio77"
Ese es mi problema,que no se implementarlo,es decir que no se como hacerlo,,por eso lo pregunto..no se como implementarlo en código.
¿Que es lo que no sabes implementar? ¿Tu propia lista de palabras?  ¿"Borrar" las palabras repetidas?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #14 en: Lunes 16 de Abril de 2007, 14:03 »
0
borrar..es lo que no se implementar...no se implementar...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Es Sobre Cadenas Y Strings
« Respuesta #15 en: Lunes 16 de Abril de 2007, 14:17 »
0
Cita de: "pacorubio77"
borrar..es lo que no se implementar...no se implementar...
Hay varias formas de hacerlo, podes crear una nueva cadena y olvidarte de la linea del archivo y en esta solo poner palabras sin repetir. Otra forma seria ignorar y es mas simple, en cuanto determinas una palabra, la buscas en la misma linea (strstr) y si la encontras directamente la ignoras.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.