-
Alguien me hecha una mano con un problema de programacion???
Problema 2
Un editor de texto es un programa que permite escribir y modificar archivos digitales compuestos unicamente por texto sin formato, conocidos comuntmente como archivos de texto. Se distinguen de los procesadores de textos en que s’utilizan para escribir nombre de texto, sin formato y sin imágenes. Hay una gran variedad de editores de texto. Algunos s´dónde d’os general, mientras que otras están diseñados por escribir o programar en un lenguaje. Algunos de uso muy sencillos, mientras que otras tienen implementadas gran cantidad de funciones. 1 Una de las funciones mas comunes que nos podemos encontrar en un editor de texto ´se la de buscar una palabra o frase dentro el mismo.ELobjetivo d’esta practica es el de diseñar e implementar una variante de la funci´o de busqueda en la que buscaremos palabras que sean anagrames d’una palabra dada. Un anagrama ´se una palabra o una frase formados por la transposici´o de sus letras. Este tipo de busqueda ´se utilizada en aplicaciones reales en las que en caso de no encontrar la palabra introducıda se buscan angramas de la misma intentando prever que l’usuario s’ha equivocado. Varios buscadores bien conocidos como www.google.se, www.msn.se ´o www.yahoo.se utilizan tecnicas de este estilo por ayudar a l’usuario en la busqueda.
El problema consta de 3 fases
1. Obtener la palabra: Nuestro programa recibira desde la entrada estandard (teclado o fichero en caso de hacer un redireccionament) la palabra a buscar. Esta palabra sera la primera introducida.
2. Buscar anagramas en el texto: Una vez sabemos la palabra que queramos buscar en el texto, pasaremos a la obtencion del texto que, al igual que la palabra a identificar, nos vendrá introducida por la entrada estandard. El unico requisito a seguir para l’entrada d’este texto es que ha de acabar con 2 puntos simples, los cuales pueden estar separados por espacios, cambios de linia o tabuladores.No se permite almacenar todo el texto en memoria, por lo tanto, el que se pretende leer el texto palabra a palabra y tratarlas a medida que las vamos leyendo. Por este problema consideraremos que hemos encontrado un anagrama, cuanto la palabra del texto tenga las mismas letras que la palabra a buscar aunque sean en diferente orden, es a decir, las letras de la palabra del texto son una transposicion de las de la palabra a buscar.
3. Mostrar el resultado de la busqueda: Finalmente, una vez obtenidos los resultados de buscar la palabra dentro el texto, el que debemos hacer es mostrar el resultado. La informacion que tendra que devolver nuestro programa es:
• Cada una de las palabras del texto que son anagramas de la palabra que estamos buscando.
• El numero total a veces que hemos encontrado anagramas de la palabra en el texto.Ejemplo:
• Entrada:
RaSTer
A raster graphics image, sterar digital image, or starre bitmap,
is a data raaste or structure representing a generally
rectangular grid of retsar pixels, or points of tesrar color,
on a computer rartes monitor, paper, or other display device..
Sortida:
Anagrama trobat: raster
Anagrama trobat: sterar
Anagrama trobat: starre
Anagrama trobat: retsar
Anagrama trobat: tesrar
Anagrama trobat: rartes
Se han encontrado 6 anagramas de la palabra "raster".3 Consideraciones
• Cada palabra tendra como mucho 50 caracteres.
• El programa no debe diferenciar entre mayusculas y minusculas, es a decir, para el nuestro programa es el mismo “Hola” que “hola”.
• Por facilitar l’enunciado, se harán sobre textos en ingles,así no hace falta considerar los acentos a las palabras. Por lo tanto, una palabra estara formada por las letras
{a, . . . , z,A, . . . ,Z}.El problema ya esta hecho pero me falla algo y no doy con el error:llorar:, por eso pido ayuda alguien que lo vea por primera vez.
El problema ya va adjunto.
Muchas gracias por la ayuda !!!! -
Aqui esta el problema.
Y muchas gracias de verdad !!!!
attachment_p_439133_0_problema2.zip.zip -
Ufff
A mi me gustaría ayudarte pero la programación que estoy dando en la universidad es en java
De todas formas intentaré hecharle un vistazo
SaludoS
-
Al final lo has solucionado??
Si no es asi, que es lo que falla?? es decir, da un error, da un resultado inesperado…?? -
Creo que el problema esta al principio, pero no doy con él.
-
Resulta que lo puedo compilar, pero luego para comprobar si funciona le tengo que pasar un conjunto de pruebas, pero cuando lo intento me da error.
attachment_p_439139_0_conjunto-de-pruebas.zip -
Uhhm, justo ahora me voy a cenar pero al volver le echare un vistazo. Es que llevo toda la tarde peleandome vs asp.net, informes y sus respectivas madres en pelotas, y tengo ganas de un codigo "good-old c" xD
-
Solo te da el error con las pruebas?? Yo no puedo salir del programa O_o es decir, no acaba nunca…<br />Es que no se, hay unas cuantas cosas que no me cuadran:<br />-El "ultima_paraula" hace una asignacion en el return! Con lo que siempre devuelve true, y no acaba nunca. Tendrias que ponerle la comparacion "==" para que si encuentra '\0' salga, siempre que lo tengas copiado en la poscion cero (cosa que no se porque todavia no he acabado de leerlo).<br />-El "saltar_blancs" no salta blancos, busca el caracter '.', y si no lo encuentra sale. Tambien para si encuentra una letra (como toca); tendrias que ponerle " c!='.' ", es decir, que "c no sea un punto".<br />-El "copiar_paraula" acepta cualquier caracter. Para restringirlo, has de utilizar el and "&&" y no el or "||", o de lo contrario acepta cualquier valor (mietras sea >a <strong>Ó</strong> <z, aceptas ambas cosas).<br /><br />Vale he hecho eso, y me sale un bucle infinito de anagramas trobats xD Supongo que algun bucle que se te habra pasado por alto. Dentro de poco me voy a ver lost, voy a ver si encuentro algo mas antes de ello
-
Uhhmmm… el anagrama... a ver, explicame que deberia/quieres que haga la funcion "anagrama".
Y tambien asi un poco por encima cada funcion, y la idea general del programa. Mas que nada porque hay cosas que pueden parecer absurdas pero tienen sentido, y otras cosas puede que no lo tengan y pasan desapercibidas.Ahora que me fijo, todas esas variables "fi" locales a funciones (que estan dentro de funciones) da igual lo que les asignes, cuando salgas de la funcion se pierde. O haces "fi" global (lo cual es una guarrada y los profes suelen ser bastante estrictos), o haces que la funcion devuelva un booleano y lo tratas en un nivel superior (generalmente en el main).
-
Bueno te puedo decir un par de pautas que yo de ti seguiria:
-Indicar al usuario que esta pasando, en plan "Introdueixi la paraula a cercar:" y cuando la has introducido que diga "Has introduit la paraula: …", y asi te aseguras 100% de que hasta ahi ha funcionado correctamente. Luego algo como "Introdueixi el texte on cercar els anagrames:".
-Piensa que un bucle es para cosas repetitivas. La peticion de la palabra a buscar cuantas veces se hace? Tan solo una vez, no? Pues entonces fuera del bucle, castigada! xD y te queda algo como:
obtenir_primera_paraula(c,p1);
while(!fi) {
llegir_paraula(c,p2);
while(!ultima_paraula(p2)) {
tractar_paraula(p1,p2);
fi=llegir_paraula(c,p2);
}
compt=compt+1;
}
-Fijate que he marcado "fi" en negrita; lo suyo seria modificar la funcion para que devuelva booleanos, y asi fi valdra "true" en cuanto se encuentren los dos puntos.Por ultimo, que IDE utilizas?? La opcion de "debuggear" es muy interesante, y en el 99% de los casos muuy facil de usar, asi que no lo dudes, que los tipicos "printf" para buscar errores suelen ser bastante coñazo
-
Si te sirve una solucion en c++ tal vez podria ponerme esta noche a tratar de resolvertelo. Saludos!
-
jajaja, yo por lo que he visto no creo que me ponga ya, ya que Istarion creo que ha solucionado casi todos lo problemas!
Por si sirve de algo, también va muy bien ir poniendo comentarios para saber lo k se va haciendo y a la vez hace un código más fácil de entender en estos casos…
-
Es que la otra opcion es explicar como hacer el programa entero, varias posibles soluciones y eso. De todas formas en primero mola hacer los programas a saco, probando hasta que acaba funcionando. Yo creo que prefiero aprender asi, haciendolo a piñon aunque no sea perfecto pero que funcione, y luego que me expliquen como se hace bien xD Esa es la mejor manera de aprender.
Ademas, luego con el tiempo vuelves a mirar los programas que has hecho, y te preguntas como ese retorcido trozo de codigo acababa funcionando xDBueno mañana si tengo un hueco por la mañana le echo un vistazo otra vez
P.D.: Y ahora a dormir, vaya horas que hago viendo Lost xDDD
-
Bueno, ya no hace falta que os rompais mas la cabeza :p, he conseguido que funcione gracias a la ayuda de un compañero, ya que aún estoy un poco verde :muerto:. Pero ante todo quiero daros las gracias por vuestra ayuda !!!
Ya nos iremos viendo por la web. Gracias
PD: Mas hacia adelante ya os iré preguntando otras cosas xDD:risitas:
-
Aprovechando este foro, queria pedir consejo sobre algun programa que este bien para programar en c++, y que sea para windows, y si sabeis de algun tutorial que sea bueno tampoco vendria mal.
Gracias !!!
-
Quitando entornos tochos y de pago tipo visual c, conozco los siguientes:
-Eclipse, tambien permite programar en muchos otros lenguajes, y tiene miles de plugins.
-Devcpp, aunque su desarrollo se estanco, es bastante rapido, comodo y va bien. Lo unico es que ya empieza a estar anticuado y no tiene "pijaditas" de otros entornos que se agradecen.
-Codeblocks, esta muy bien. Me recuerda al visual studio aunque todavia le quedaYo optaria por el Codeblocks, de los que he puesto es el que mas me convence, aunque el devc suele ser mas que suficiente. A mi el Eclipse me gusta bastante, es potente, pero tiene pijaditas que no me gustan nada y es un poco "engendro" (algo lento); ahora bien, si te acostumbras a usarlo esta muy bien.
Edito: Tutoriales busca por google que no tengo ninguno guardado; las referencias de "c++ con clase" esta bien para iniciarse, aunque quizas te deja un poquito a medias. Pero para empezar esta bien. Ahora, lo que tu hacias en el ejemplo que me has pasado, es una mezcla de c++ y c, puesto que usabas bools (ANSI C no soporta booleanos).
-
Yo he escuchado que eclipse va muy bien…
Sobre el manual mira por esta pagina haber que encuentras: http://www.elrincondelc.com/nuevorincon/index.php
SaludoS
-
ok, gracias por vuestra ayuda
-
Pues yo parasito utilizo el Borland C++ Builder 6.0, muy completo y tiene buenas opciones para desarrollar proyectos con diseño grafico.