Algo falla aqui

nokia
11 de Diciembre del 2005
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

nokia
11 de Diciembre del 2005
Vaya lio para aclararse sin tabuladores jejeje, bueno aver si podeis echarme un cable.
gracias

kike
11 de Diciembre del 2005
he arreglao tu codigo pa que funcione, observa los cambios y deduciras donde estaba tu error
un saludo

kike
11 de Diciembre del 2005
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
}
}
}

}