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

Duda sobre función que devuelve la posición de una subcadena en otra cadena

Estas en el tema de Duda sobre función que devuelve la posición de una subcadena en otra cadena en el foro de C/C++ en Foros del Web. Buenas, sigo liado con las cadenas. Este es el enunciado del ejercicio: 7) Función para determinar la primera posición en la que aparece una cadena ...
  #1 (permalink)  
Antiguo 11/08/2015, 15:29
 
Fecha de Ingreso: agosto-2015
Ubicación: Andalucía
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Duda sobre función que devuelve la posición de una subcadena en otra cadena

Buenas, sigo liado con las cadenas. Este es el enunciado del ejercicio:

7) Función para determinar la primera posición en la que aparece una
cadena subcad –subcadena– dentro de otra cadena cad
int posicion(const TCadena subcad, const TCadena cad)


Mi código es este, lo he cambiado ya varias veces pero sigue sin funcionarme, qué hago mal?

Código C++:
Ver original
  1. int posicion(const TCadena subcad, const TCadena cad){
  2.     unsigned a=0, e=0, pos=0;
  3.     while(a<longitud(subcad) && longitud(cad)>=e+longitud(subcad)){
  4.         if(subcad[a]==cad[e]){
  5.             if(pos==0) pos=a;
  6.             ++a;
  7.             ++e;
  8.         }else{
  9.             pos=0;
  10.             a=0;
  11.         }//end else
  12.         ++e;
  13.     }//end while
  14.  
  15.     if(subcad[a]=='\0') return pos;
  16. }
  #2 (permalink)  
Antiguo 13/08/2015, 08:37
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 8 meses
Puntos: 3
Respuesta: Duda sobre función que devuelve la posición de una subcadena en otra caden

¿No puedes usar funciones de C? En la librería string.h de C tienes strstr que hace eso mismo jejeje. De todos modos no es complicado hacer tu propia función.
Necesitas como parámetros la cadena y la subcadena, dentro necesitas un while con una condicion de salida que seria que el largo de la cadena sea mayor que el contador que incrementaría en uno en cada pasada. Dentro del bucle necesitas otro bucle con otro contador y la salida del bucle es el largo de la subcadena y dentro del segundo bucle comparas carácter por carácter y si son iguales el contador será igual al largo de la subcadena y sales del primer bucle. Es un poco lioso explicarlo pero en el móvil no puedo hacer más.
  #3 (permalink)  
Antiguo 13/08/2015, 09:23
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 8 meses
Puntos: 3
Respuesta: Duda sobre función que devuelve la posición de una subcadena en otra caden

A esto me refiero y se puede mejorar ya que no me gustan mucho esos breaks pero no tengo tiempo para mejorarlo. Te lo dejo a ti:
Código PHP:
#include <stdio.h>
#include <string.h>

int pos(charcadenacharsubcadena);

int main(int argccharargv[])
{
   
int posicion pos("hola mundo""mundo");
   return 
0;
}
//---------------------------------------------------------------------------

int pos(charcadenacharsubcadena)
{
   
int salida=0largoCadenalargoSubcadenacontadorCadena=0contadorSubcadena;

   
largoCadena strlen(cadena);
   
largoSubcadena strlen(subcadena);
   do{
      
contadorSubcadena 0;
      do{
         if(((
contadorCadena contadorSubcadena) < largoCadena) &&
           (
cadena[contadorCadena contadorSubcadena] == subcadena[contadorSubcadena]))
            
contadorSubcadena++;
         else
            break;
      }while((
contadorCadena contadorSubcadena) < largoCadena);
      if(
contadorSubcadena == largoSubcadena)
      {
         
salida contadorCadena;
         break;
      }
      
contadorCadena++;
   }while(
contadorCadena largoCadena);
   return 
salida;


Última edición por aguml; 13/08/2015 a las 09:37

Etiquetas: cadena, devuelve, funcion, int, subcadena
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 14:36.