Título: Frustracion Publicado por: ronbay en 17 Junio 2021, 02:06 am BUENAS GENTE.
AYUDA CON RECURSIVIDAD POR FAVOR. tengo un ejercicio que tiene que contar cuantas palabras hay en una cadena. lo he tratado de hacer de muchas maneras y no puedo resolverlo. LES PASO LO QUE HICE PARA QUE ME PUEDAN GUIAR EN DONDE ESTOY MAL. Código: Byte CanPalabras(AnsiString x) LES AGRADEZCO DE ANTEMANO Título: Re: Frustracion Publicado por: Xyzed en 17 Junio 2021, 03:13 am Hola.
Ya habías abierto un post (https://foro.elhacker.net/programacion_cc/nesecito_ayuda_con_recusividad_por_favor_no_entiendo-t510360.0.html;msg2242848#msg2242848) con la misma pregunta. Tendrías que haber comentado en el mismo posteo la consulta, no está permitido abrir dos temas distintos sobre lo mismo. Saludos. Título: Re: Frustracion Publicado por: Eternal Idol en 17 Junio 2021, 16:54 pm AnsiString no es standard, usa std::string y depura tu codigo.
Título: Re: Frustracion Publicado por: ronbay en 17 Junio 2021, 20:01 pm ya lo resolvi..NO BUSCABA QUE LO HAGAN SOLO QUE ME DEN SU PUNTO DE VISTA, POR AHI ESTOY IGNORANDO ALGO
Código: Byte CanPalabras(AnsiString x) Título: Re: Frustracion Publicado por: Serapis en 17 Junio 2021, 23:48 pm La cualidad que distingue una palabra de otra, es que medie un separador entre las palabras, cuando son más de una.
A su vez esto exige definir palabra y separador: letra = 0|1|2|3...8|9|A|B|C...Y|Z|a|b|c|d...y|z| ...etc, si se precisan más separador: espacio|tabulador|,|.|:|;|"| ...etc... si se precisan más separadores = separador+ //uno o más separadores palabra = letra+ // una o más letras palabras = palabra [separador palabra]* Una vez claro que letras pueden (son admitidas para) formar palabras y qué caracteres son un separador, se crean un array de 256 bytes indicando para cada uno, si es letra, separador (o no se admite = 0). Ese valor se toma de una enumeración y el array se crea al iniciar la aplicación. Código:
El resto de caracteres tendrá el valor 0, señalando que o bien es un error o bien que se ignorará... (al gusto). Finalmente puedes crear tu función, que sí, que puede ser recursiva, aunque es el tipo de casos que claramente no lo requiere, pero que para prácticas es adecuado. En cuyo caso, convendría Código: entero BuscarPalabra(string Texto, entero Inicio, entero NumChars) La función se invocaría tal que así: Código: texto = "Hola, esto es "..." 0001 ejemplo de pru3ba." Es del todo importante decidir qué caracteres pertencen a cada uno de los 3 grupos. Idealmente el grupo 'CARACTER_NO_APROBADO' no debería existir. Pero como nada es perfecto, ahi están. Se pueden ignorar o marcar como error, en el pseudocódigo se ignoran, pero su aparición puede arrojar error bajo determinadas condiciones, no se contempla evitar dicho errror, so pena de un código más complejo que luego interferirá con la comprensión. Por supuesto, no necesitas construir el array ni tirar de la enumeración, sino del propio lenguaje, pero igualmente es preciso ilustrar dichos conceptos, sea que luego se construya o no. Para comprender el asunto, es preferible recrearlo y ver lo sencillo que es resolverlo. El pseudocodigo está escrito al vuelo, pudiera hacerle falta un repaso, que queda a tu esfuerzo... lo mismo que entenderlo, y convertirlo a código. ...y no, no es necesario eliminar letras... imagina un texto de 100 millones de palabras, si con cada letra tienes que reconstruir otra cadena donde sea idéntica excepto en que ahora no tiene el que antes era el carácter primero/o ultimo (lo mismo me da, que me da lo mismo)... se haría eterno... simplemente avanza el puntero de lectura del char sobre el texto. Título: Re: Frustracion Publicado por: dijsktra en 25 Junio 2021, 21:21 pm Aqui te va una propuesta de conteo de palabras con recursion...
(No es pa tanta frustración... Más se perdio en Cuba, que decía mi abuelo... ::) :D ) Decir que es imprescindible llevar control de la primera posición de la linea - si queremos admitir lineas vacias - y del resultado provisional. Código
Algunos casos de prueba... Código: En un lugar de la Mancha Título: Re: Frustracion Publicado por: ronbay en 29 Junio 2021, 16:57 pm Gracias bro..con eso lo voy a mejorar el programa.
|