C/Visual C - palabra mayor

 
Vista:

palabra mayor

Publicado por ayuda c++ sencillo (1 intervención) el 04/01/2007 20:13:28
Buenas, el algoritmo tiene que leer una frase e imprimir la palabra con más caracteres y su numero.
La idea es recorrer la cadena y parar cuando haya un espacio y ver la palabra y despues seguir y si al siguiente espacio la palabra que queda es amyor que la anterior substituirla. El problema es ke este ultimo paso no se como hacerlo. Tengo esto:

#include <iostream.h>
using namespace std;
void LeeCadena (char vector[]) // funcion ke lee una cadena/
{
int contador;
contador=-1;
do{
contador = contador + 1;
vector[contador] = cin.get();
}
while ( (contador < strlen(vector)) && (vector[contador] != '.'));
vector[contador] = '\0';
cin.get();
}

main()
{
char frase[100],mayor[20];
int j,i;
cout << "introduce la frase finalizada en un punto: " << endl;
LeeCadena(frase);
for (i=0;i<strlen(frase);i++){
if (frase[i]==' ' ) {
Recorro la cadena pero aqui no se como almacenar la palabra y seguir con la cadena :s
si alguien me peude ayudar... gracias :D.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:palabra mayor

Publicado por Nelek (816 intervenciones) el 05/01/2007 10:58:31
Hola,

prueba a planteartelo mas secuencialmente. Me refiero a:

Dos variables de posicion para recorrer el vector: nTempIni y nTempFin
Dos variables de posicion para saber donde buscar: nPosIni y n PosEnd

cuando encuentras un espacio haces (nTempFin- nTempIni ) si el resultado es mayor que (nPosFin - nPosIni), entonces guardas nTempFin en nPosFin y nTempIni en nPosIni, asi siempre tienes almacenado donde empieza y donde acaba la palabra mas larga que has encontrado hasta el momento.

Cuando acabas de recorrer la cadena de caracteres... usas las posiciones guardadas para extraer la palabra en si y devolver el numero de letras que contiene.

Espero que te me hayas entendido y te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:palabra mayor

Publicado por Nelek (816 intervenciones) el 05/01/2007 11:07:38
Me olvide de explicarte una cosa:

Todas esas posisciones se incializan a 0 (para recorrer la cadena). Cuando encuentras un espacio, nTempFin ha de ser tu posicion "contador", haces la resta, la comparas con la resta de las nPosXXX y luego guardas contador en nTempIni al final del todo.

Asi la cosa queda mas o menos:

empieza el bucle
{
si encuentro un espacio o un punto (o una coma si esta permitido)
{
nTempFin = contador para saber donde te acabas de parar
si nTempFin - nTempIni es mayor que nPosFin - nPosIni
{
guardo las nTempXXX en las nPosXXX
}
nTempIni = contador para saber donde te paraste ahora en el proximo espacio
}
contador++
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:palabra mayor

Publicado por Edu (1 intervención) el 05/01/2007 14:11:58
Muchas gracias, está explicado perfectamente.. ahora mismo me parece super fácil muchas gracias :D.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar