Algo falla aqui
Hola a todos!, aver si me podeis echar una mano con esto.
Estoy haciendo un programilla (para vosotros de risa) de busqueda de palabras:
al programa le tenemos que pasar una frase y una palabra, y te tiene que dar como resultado la posicion en la que la ha encontrado (si la encuentra), y dar un mensaje de que no la a encontrado en caso contrario.
Los problemas que tengo son:
-Con que coincidan unicamente dos letras, el programa da por buena la palabra (ej: frase:hola que tal, palabra:ta; el programa me dice que ha encontrado la palabra ta, cuando en verdad la palabra de la frase no es "ta" sino "tal").
-No se como hacer para que diga que no la ha encontrado.
Aqui va el codigo que llevo de momento:
#include <iostream.h>
#include <string.h> //para comando strlen()
void main (void)
{
//declaraciones
char frase[150], palabra[25];
int lonf, lonp, i, j=0;
//pide al usuario una frase
cout<<"Introduzca una frase: "<<endl;
cin.getline(frase,150);
//pide al usuario una palabra
cout<<"Teclee la palabra que desea buscar en la frase: "<<endl;
cin>>palabra;
//asignamos a lonp, y lonf, el numero de caracteres de "frase" y "palabra"
lonf=strlen(frase);
lonp=strlen(palabra);
//iniciamos un bucle for para recorrer la frase
for (i=0;i<lonf;)
{
if (palabra[j]==frase[i]) //vemos si la primera letra de la la palabra coincide con alguna letra de la frase
{
for (j=1;j<lonp;j++) //al coincidir la primera letra, pasamos al bucle para ver si coinciden el resto
{
i++;
if (palabra[j]==frase[i]) //si coinciden, mostramos lo siguiente por pantalla y acabamos
{
cout<<"Frase encontrada en la posicion: "<<i<<endl;
break;
}
else
{
i++;
}
}
}
else
{
i++;
}
}
}
Gracias a todos
Estoy haciendo un programilla (para vosotros de risa) de busqueda de palabras:
al programa le tenemos que pasar una frase y una palabra, y te tiene que dar como resultado la posicion en la que la ha encontrado (si la encuentra), y dar un mensaje de que no la a encontrado en caso contrario.
Los problemas que tengo son:
-Con que coincidan unicamente dos letras, el programa da por buena la palabra (ej: frase:hola que tal, palabra:ta; el programa me dice que ha encontrado la palabra ta, cuando en verdad la palabra de la frase no es "ta" sino "tal").
-No se como hacer para que diga que no la ha encontrado.
Aqui va el codigo que llevo de momento:
#include <iostream.h>
#include <string.h> //para comando strlen()
void main (void)
{
//declaraciones
char frase[150], palabra[25];
int lonf, lonp, i, j=0;
//pide al usuario una frase
cout<<"Introduzca una frase: "<<endl;
cin.getline(frase,150);
//pide al usuario una palabra
cout<<"Teclee la palabra que desea buscar en la frase: "<<endl;
cin>>palabra;
//asignamos a lonp, y lonf, el numero de caracteres de "frase" y "palabra"
lonf=strlen(frase);
lonp=strlen(palabra);
//iniciamos un bucle for para recorrer la frase
for (i=0;i<lonf;)
{
if (palabra[j]==frase[i]) //vemos si la primera letra de la la palabra coincide con alguna letra de la frase
{
for (j=1;j<lonp;j++) //al coincidir la primera letra, pasamos al bucle para ver si coinciden el resto
{
i++;
if (palabra[j]==frase[i]) //si coinciden, mostramos lo siguiente por pantalla y acabamos
{
cout<<"Frase encontrada en la posicion: "<<i<<endl;
break;
}
else
{
i++;
}
}
}
else
{
i++;
}
}
}
Gracias a todos
Vaya lio para aclararse sin tabuladores jejeje, bueno aver si podeis echarme un cable.
gracias
gracias
he arreglao tu codigo pa que funcione, observa los cambios y deduciras donde estaba tu error
un saludo
un saludo
perdona aqui esta el codigo
//#include <iostream.h>
#include <string.h> //para comando strlen()
#include <iostream.h>
void main (void)
{
//declaraciones
char frase[150], palabra[25];
int lonf, lonp, i, j=0;
//pide al usuario una frase
cout<<\"Introduzca una frase: \"<<endl;
cin.getline(frase,150);
//pide al usuario una palabra
cout<<\"Teclee la palabra que desea buscar en la frase: \"<<endl;
cin>>palabra;
//asignamos a lonp, y lonf, el numero de caracteres de \"frase\" y \"palabra\"
lonf=strlen(frase);
lonp=strlen(palabra);
//iniciamos un bucle for para recorrer la frase
for (i=0;i<lonf;i++)
{
//vemos si la primera letra de la la palabra coincide con la letra actual
if (palabra[0]==frase[i])
{
int h=i+1;//variable independiente para recorrer la frase
//bucle para ver si coinciden el resto
for (j=1;j<lonp;j++)
{
//si no coinciden las letras actuales
if (palabra[j]!=frase[h])
{
//h=0 y salir
h=0;
break;
}
else
h++;
}
//si h no se ha puesto a 0 es que se ha encontrado la palabra
if(h)
{
cout<<\"palabra encontrada en :\"<<i<<\" indice basado en 0\"<<endl;
break;//terminar en primera coincidencia
}
}
}
}
//#include <iostream.h>
#include <string.h> //para comando strlen()
#include <iostream.h>
void main (void)
{
//declaraciones
char frase[150], palabra[25];
int lonf, lonp, i, j=0;
//pide al usuario una frase
cout<<\"Introduzca una frase: \"<<endl;
cin.getline(frase,150);
//pide al usuario una palabra
cout<<\"Teclee la palabra que desea buscar en la frase: \"<<endl;
cin>>palabra;
//asignamos a lonp, y lonf, el numero de caracteres de \"frase\" y \"palabra\"
lonf=strlen(frase);
lonp=strlen(palabra);
//iniciamos un bucle for para recorrer la frase
for (i=0;i<lonf;i++)
{
//vemos si la primera letra de la la palabra coincide con la letra actual
if (palabra[0]==frase[i])
{
int h=i+1;//variable independiente para recorrer la frase
//bucle para ver si coinciden el resto
for (j=1;j<lonp;j++)
{
//si no coinciden las letras actuales
if (palabra[j]!=frase[h])
{
//h=0 y salir
h=0;
break;
}
else
h++;
}
//si h no se ha puesto a 0 es que se ha encontrado la palabra
if(h)
{
cout<<\"palabra encontrada en :\"<<i<<\" indice basado en 0\"<<endl;
break;//terminar en primera coincidencia
}
}
}
}