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

Ayuda con cadenas en C

Estas en el tema de Ayuda con cadenas en C en el foro de C/C++ en Foros del Web. mi problema es el siguiente. tengo k buscar una palabra en una cadena de caracteres y devolver su posicion en la cadena si la encuentra ...
  #1 (permalink)  
Antiguo 23/12/2009, 07:24
 
Fecha de Ingreso: diciembre-2009
Mensajes: 6
Antigüedad: 14 años, 4 meses
Puntos: 0
Información Ayuda con cadenas en C

mi problema es el siguiente.

tengo k buscar una palabra en una cadena de caracteres y devolver su posicion en la cadena si la encuentra y -1 sino la encuentra.

Código:
int main()
{
   char cadena[100];
   char palabra;
   int posicion;

  printf("Introduzca la palabra a buscar: ");
  scanf("%s", &palabra);
   
   posicion = buscarPalabra(frase,palabra);
   
   if(posicion=-1)
   {
     printf("La palabra introducida no se encuentra en la frase"); 
   }
   else
   {
     printf("La palabra %s se encuentra en la posicion %d", palabra,posicion);
   }


int buscarPalabra(char cadena[], char palabra[])
.
.
.
.
.
como podria plantear esa funcion xra buscar 1 palabra en una cadena y devolver la posicion en la que se encuentr????

gracias
  #2 (permalink)  
Antiguo 23/12/2009, 08:22
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Ayuda con cadenas en C

Código C++:
Ver original
  1. #include <conio>
  2. #include <string>
  3.  
  4. using namespace std;
  5. int main(){
  6.  
  7.  char cadena[]="como podria plantear esa funcion";
  8.  char palabra[]="esa";
  9.  int con=0;
  10.  string str = string(cadena);
  11.  
  12. if(str.find(palabra) == -1)
  13.  cout<<"No se encuentra palabra";
  14. else
  15.  cout<<"La palabra si se encuentra";
  16.  
  17.   getch();
  18.   return 0;
  19. }
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #3 (permalink)  
Antiguo 23/12/2009, 11:07
 
Fecha de Ingreso: diciembre-2009
Mensajes: 6
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda con cadenas en C

gracia x contestar mhax

El codigo que necesito es c no c++ y aunk se parence y podria adaptarlo al mio el problema sk necesito que el programa me de la posicion de la palabra en la cadena no que simplemente m diga que la ha encontrada, necesito que me diga: la palabra está en la frase en la posicion 1 o en la posición x

a ver si alguien tuviera idea de como hacerlo

gracias !!
  #4 (permalink)  
Antiguo 23/12/2009, 12:22
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Ayuda con cadenas en C

Ese mismo codigo te sirve para lo que quieres (solo tienes que adaptarlo a C).
la funcion find() retorna -1 si la palabra no esta
de lo contrario retorna la posicion donde esta la palabra.
entonces puedes hacer esto:
Código C:
Ver original
  1. if(str.find(palabra) != -1)
  2.   printf("La posicion de la palabra es %d",str.find(palabra));

Saludos.
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #5 (permalink)  
Antiguo 23/12/2009, 18:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 50
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Ayuda con cadenas en C

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int _find(char* cadena, char* palabra){
  6.  
  7.     int i, j = 0;
  8.  
  9.     for(i = 0; i < strlen(cadena); i++){
  10.         if(palabra[j] == cadena[i]){
  11.             ++j;
  12.  
  13.             if(j == strlen(palabra))
  14.                 return (2 + i - j);
  15.         }
  16.  
  17.         else j = 0;
  18.     }
  19.  
  20.     return -1;
  21. }
  22.  
  23.  
  24. int main(){
  25.  
  26.     int pos;
  27.     char cadena[100],
  28.          palabra[100];
  29.  
  30.     printf("Ingrese la cadena: ");
  31.     gets(cadena);
  32.  
  33.     printf("Ingrese la palabra a buscar: ");
  34.     gets(palabra);
  35.  
  36.     pos = _find(cadena, palabra);
  37.  
  38.     if(pos == -1)
  39.         printf("La cadena no esta.!\n");
  40.  
  41.     else
  42.         printf("La cadena empieza en la posicion %d.!\n", pos);
  43.  
  44.     system("Pause");
  45.  
  46.     return 0;
  47. }
  #6 (permalink)  
Antiguo 24/12/2009, 03:55
 
Fecha de Ingreso: diciembre-2009
Mensajes: 6
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda con cadenas en C

Muchisimas gracias Teto !!! Es justo lo que buscaba y funciona a la perfección, gracias por dedicarme este tiempo a resolver el problema. Te doy un karma positivo por la ayuda

A Mhax le agradezco tb la ayuda prestada en dos ocasiones

Saludos y gracias !!
  #7 (permalink)  
Antiguo 19/01/2010, 03:07
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda con cadenas en C

hola, el código funciona estupendamente, pero me gustaría saber porque se devuelve 2 +i -j.

Gracias
  #8 (permalink)  
Antiguo 19/01/2010, 03:43
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda con cadenas en C

vale yo mismo me he dado cuenta, jeje, muchas gracias

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 12:48.