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

C++ - Posicion de una Subcadena

Estas en el tema de C++ - Posicion de una Subcadena en el foro de C/C++ en Foros del Web. Buenas, tengo el siguiente problema: Necesito Buscar una Subcadena dentro de una Cadena, hasta el momento tengo lo siguiente dentro de una funcion en un ...
  #1 (permalink)  
Antiguo 20/05/2012, 14:13
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta C++ - Posicion de una Subcadena

Buenas, tengo el siguiente problema:
Necesito Buscar una Subcadena dentro de una Cadena, hasta el momento tengo lo siguiente dentro de una funcion en un archivo de encabezamiento:

Código c++:
Ver original
  1. int comparar(char ora1[100], char ora2[100], int x){
  2. int i;
  3. if (strstr(ora1,ora2)) return i+1 ;
  4. else return -1
  5.  
  6. }

el problema es que ademas de encontrar y decir si aparece o no, necesito tambien saber en que posicion se encuentra y no encuentro la manera de hacerlo ya que la funcion solo me entrega si lo encontró o no... estar muy agradecido si me colaboran con esto... gracias de antemano
  #2 (permalink)  
Antiguo 20/05/2012, 17:06
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: C++ - Posicion de una Subcadena

Se me acaba de ocurrir esto, fijate si funciona:

Código C:
Ver original
  1. int comparar(char ora1[100], char ora2[100], int x){
  2. char * c;
  3. if ( c =  strstr(ora1,ora2)) return (c - ora1) ;
  4. else return -1
  5.  
  6. }

strstr devuelve un puntero a la posicion donde empieza el primer caracter si encontro la cadena...simplmente lo que hacemos es restar esa posicion de memoria con la inicial de la cadena principal..

Por ejemplo, supongamos que la cadena principal empieza en la direccion 1000. Y el strstr te devuelve que la cadena que buscabas esta en la direccion 1005. Entonces 1005 - 1000 = 5 asi qe esta en la posicion 5...

Saludos.
  #3 (permalink)  
Antiguo 21/05/2012, 11:39
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: C++ - Posicion de una Subcadena

Cita:
Iniciado por sam90 Ver Mensaje
Se me acaba de ocurrir esto, fijate si funciona:

Código C:
Ver original
  1. int comparar(char ora1[100], char ora2[100], int x){
  2. char * c;
  3. if ( c =  strstr(ora1,ora2)) return (c - ora1) ;
  4. else return -1
  5.  
  6. }

strstr devuelve un puntero a la posicion donde empieza el primer caracter si encontro la cadena...simplmente lo que hacemos es restar esa posicion de memoria con la inicial de la cadena principal..

Por ejemplo, supongamos que la cadena principal empieza en la direccion 1000. Y el strstr te devuelve que la cadena que buscabas esta en la direccion 1005. Entonces 1005 - 1000 = 5 asi qe esta en la posicion 5...

Saludos.
esta muy muy bien, me gustaria que el programa regrese la posicion de la palabra y no del caracter, pero esto esta muy bien... Gracias
  #4 (permalink)  
Antiguo 21/05/2012, 11:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: C++ - Posicion de una Subcadena

a que te refieres con la posicion de la palabra?? osea a cuantas palabras hay antes??
  #5 (permalink)  
Antiguo 21/05/2012, 12:33
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
De acuerdo Respuesta: C++ - Posicion de una Subcadena

Cita:
Iniciado por sam90 Ver Mensaje
a que te refieres con la posicion de la palabra?? osea a cuantas palabras hay antes??
No Problem amigo!!... ya comprendi mejor el trabajo que tenia que hacer y es exactamente como lo planteaste... de nuevo muchas muchas gracias, doy por solucionado este problema :)

Etiquetas: c++, posicion, subcadena, cadenas
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 00:36.