Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - K-YreX

#681
Esos errores que te salen es porque eso son funciones que tienes que crear tú, o implementarlo directamente en la función <main> pero no son funciones que ya existan. Yo lo he usado para que veas el planteamiento, la parte de implementarlo que te queda a ti es la que consiste en traducir el planteamiento a lenguaje C.
Y si sólo llevas 1 día con la programación, este me parece un ejercicio demasiado complejo.

Las colas no están implementadas en C por lo que o lo implementas tú (lo que haría el programa más grande y complejo) o usas algún otro planteamiento.

Como puedes ver, en <linea_actual> queremos guardar una línea entera del fichero por lo que no puede ser un <char> sino un array de <char> (tienes que ver también el tamaño para poder guardar todas las líneas).
#682
Veo que con una lectura secuencial del fichero se complica un poco la cosa ya que estamos haciendo referencia a dos líneas antes o dos líneas después de la actual (según el planteamiento). Entonces aunque pierda un poco de eficiencia, creo que es más fácil hacer una lectura completa del fichero, localizar todas las líneas que tienen la palabra guía y después hacer una segunda lectura para ir transcribiendo el fichero.

contador_linea := 0
mientras !fin(f1)
    linea_actual := leerLinea(f1)
    si encontrada(palabra_guia, linea_actual)
        cola.push(contador_linea + 2)
    fin si
    contador_linea := contador_linea + 1
fin mientras

contador_linea := 0
mientras !fin(1)
    linea_actual := leerLinea(f1)
    mientras !cola.empty() && !fin(f1)
        si contador_linea == cola.front()
            cola.pop()
            si linea_actual != "\n"
                escribirLinea(linea_actual, f2)
            fin si
        sino
            escribirLinea(linea_actual, f2)
        fin si
        linea_actual := leerLinea(f1)
        contador_linea := contador_linea + 1
    fin mientras
    escribirLinea(linea_actual, f2)
fin mientras

Si no me ha fallado nada me parece que eso funcionaría. Lo que haces es una primera lectura del fichero y cada vez que encuentras la palabra que buscas, metes en una cola la línea que igual no hay que copiar. Luego haces una segunda pasada y cuando coincida la línea actual con el front de la cola, compruebas si está vacía o no. Si está vacía, no la copias y sino lo está, sí. Además con el bucle interno, una vez que la cola esté vacía ya no hay que comprobar nada y puedes ir copiando más libremente.
PD: Seguramente se puede optimizar el código pero lo dejo así para que veas el planteamiento y ya te encargas tú de optimizarlo cuando lo estés implementando. Suerte :-X
#683
No se hacen tareas... Si quieres obtener alguna respuesta de utilidad, tendrás que intentarlo tú mismo y preguntar alguna duda especifica. :-X
#684
Cita de: Alberto n en  5 Marzo 2019, 17:39 PM
Mi problema, que no deseo borrar todos los espacios en blanco...
Tengo un código que hace eso, lo que necesito es que busque una palabra y compruebe la segunda línea que continua esta vacía, y si es así borrarla...
Lo que no me queda muy claro es el proceso. Es decir, no sé que línea quieres borrar, si la que contiene la palabra que buscas o la que está vacía. Y tampoco sé si lo que quieres es borrar la línea del archivo original o hacer una copia y no copiar esa línea...
Si puedes poner un ejemplo exacto para ver cuál tendría que ser la salida del programa. :-X
#685
Si no me falla la cabeza, ya te han respondido en otro post.
Para ser exactos en ESTE POST
#686
Los códigos puedes (y debes :xD) meterlos entre etiquetas de código GeSHi, en lugar de delimitarlo con barras diagonales. Es más fácil de ver y no se producen problemas de etiquetas. Lo puedes seleccionar encima del cuadro de texto al escribir/modificar un mensaje.

Dicho esto, si lo que quieres es cambiar la ruta del fichero, simplemente añade la ruta al nombre del fichero.
  • Rutas en Linux
    Código (cpp) [Seleccionar]

    string nombre_entrada = "MisArchivos/Codigos/fichero_entrada.txt";
    string nombre_salida = "../fichero_salida.txt"; // ruta anterior a la actual


  • Rutas en Windows: si no me equivoco se separan con la diagonal al revés "\". Si me equivoco que alguien me corrija ya que no estoy del todo seguro de si las rutas son como en Linux o cambia algo más...
    Código (cpp) [Seleccionar]

    string nombre_entrada = "MisArchivos\Codigos\fichero_entrada.txt";


    Si quieres más información tendrías que buscar sobre como escribir la dirección o ruta de un archivo ya que eso es lo importante para lo que quieres hacer. :-X
#688
Tienes que crear conjuntos ya sea usando los contenedores de la STL (set por ejemplo) para agrupar ahí todas las posibilidades de cada tipo de palabra, te pongo un ejemplo:

set pronombres_personales = {yo, tu, el, ...}

Y luego puedes crear relaciones:

set sustantivos_masculino_singular = {coche, perro, ...}
<el> + <sustantivos_masculino_singular> -> Correcto
<la> + <sustantivos_masculino_singular> -> Incorrecto

Y esto lo puedes ir extendiendo todo lo que quieras o según las limitaciones que te hayan impuesto que como las desconozco pues te he puesto un par de ejemplos sencillos para darte una idea. Suerte :-X
#689
Imagino que tendrás algunas restricciones o limitaciones no? Algo del tipo:

<sujeto> + <verbo> + (<complementos>) -> Correcto
<sujeto> + <verbo transitivo> + <complementos> -> Correcto
<verbo no personal> + (<complementos>) -> Correcto

Ya que sino con la complejidad que tiene nuestro lenguaje que no sigue una estructura tan definida como por ejemplo el inglés y varían mucho las terminaciones tanto de número como de género, tendrías un problema excesivamente grande y complejo... :-X
#690
Te dejo un enlace AQUÍ sobre lo que has comentado. Es cierto que si se intenta borrar la pluma estando seleccionada en el HDC, no se borrará pero retornará <true> como resultado. Por eso es que no se te borra pero tampoco te da un error porque devuelva <false>.
Aquí tienes una cita del enlace que te he dejado donde lo explica un poco más:
Citar
The GDI folks found that a lot of people mess up and try to destroy objects while they are still selected into DCs. Failing the call caused two categories of problems: Some applications simply leaked resources (since they thought they were destroying the object, but weren't). Other applications checked the return value and freaked out if they saw that Delete­Object didn't actually delete the object.

To keep both of these types of applications happy, GDI will sometimes (not always) lie and say, "Sure, I deleted your object." It didn't actually delete it, because it's still selected into a DC, but it also ties a string around its finger, and when the object is finally deselected, GDI will say, "Oh, wait, I was supposed to delete this object," and perform the deletion. So the lie that GDI made wasn't so much a lie as it was an "optimistic prediction of the future."

Suerte :-X