Ficheros de Texto

Hola buenas, tengo que hacer una practica para clase y estoy un poquito verde, así que si me pudierais ayudar lo agradecería muchísimo...
Me haría falta saber a partir de un texto cualquiera, decir cual es la primera y ultima palabra de cada linea... Muchísimas gracias

1 Respuesta

Respuesta
1
Aquí tienes algunas pistas:
1) Escribe una rutina o subprograma cuyo cometido sea obtener una linea de texto del fichero de entrada: leelineatexto
Para implementar esta rutina tienes que procesar los caracteres de la entrada hasta que detectes un carácter fin de linea. Puedes aprovechar esta rutina para eliminar caracteres separadores repetidos.
2) Escribe una rutina que reciba como argumento una linea de texto y devuelva la primera y la ultima palabra: obtenpal
Para implementar esta rutina tienes que buscar el primer y el último carácter separador (blanco o tabulador) en la linea a la vez que vas almacenando cada palabra en una zona temporal.
La palabra final es aquella no nula que está almacenada en la zona temporal cuando alcanzas el fin de linea.
La palabra inicial es aquella no nula que está almacenada en la zona temporal cuando lees el primer carácter separador.
3) Programa Principal en pseudo-código:
abrir fichero de entrada FA;
abrir fichero de salida FS;
Mientras haya caracteres por leer en FA
Hacer
leelineatexto;
obtenpal(linealeaida);
Escribir en FS: Nr Linea; palabras
Finhacer
finmientras;
Nota: Si utilizas C como lenguaje, implementar lo anterior es pan comido.
Ok muchas gracias, resulta que ya lo acabé antes de leer esto pero bueno así vi que lo tengo hecho más o menos así... muchas gracias... ahora estoy con una cosilla que es difícil je je, es que tengo que quitarle las palabras repetidas a un texto y decir cuantas veces sale cada una... lo malo es que lo tengo hecho con listas... pero con listas no podemos entregarlo... si sabes algo te agradecería mucho tu ayuda... gracias
Ya sabes como son los profesores.
Es curioso, pero el uso de listas enlazadas es la forma más efectiva de realizar esa práctica, pues es el único método que se adapta bien a cualquier tipo de fichero de texto, tenga 50, 500 o 5000 palabras.
Según lees palabras, vas gestionando la memoria que necesitas para almacenarlas todas si necesitas de declarar un número máximo por anticipado.
Una posible solución es utilizar arrays de punteros a estructuras, donde cada estructura se compone de una cadena de caracteres (puntero a char) y un entero long. El entero sirve para almacenar el número de veces que aparece la palabra.
El array lo defines así
struct palabra {
char * valpal;
long numrep;
}
palabra * myarray[];
Pero si de tas cuentas, esto al fin y al cabo es una lista, ya que cada vez que encuentres una nueva palabra, tienes que reservar memoria para la nueva estructura, llenarla, y meter en el array el puntero correspondiente.
También puedes utilizar ficheros temporales, pero el programa será msd lento.
Espero que te sirva de ayuda.
Suerte.
*

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas