Practica de pascal

Me puedes indicar como hacer este programa en PASCAL:
Escribir un programa que lea un fichero de texto y que escriba por
pantalla una lista de las palabras que contiene y el numero de veces que aparece cada una de ellas.Se considera palabra
cualquier secuencia de caracteres que sea distinto de blanco
(Incluidos signos de puntuación). Debemos de almacenar la informacionara cada una de las palabras (palabra y numero de veces) como una estructura de tipo REGISTRO de tipo:
TYPE
Tpalabra=RECORD
Word:string[100];
Count:integer;
END;
Realizar la lectura carácter a carácter y convertir a string cada
palabra leída para almacenarla en la estructura anteriormente
propuesta.
Te AGRADECERÍA MUCHO me indicaras como hacerlo o si me lo
puedes hacer.Mi correo alternativo es [email protected]
Gracias.
Tengo que presentar esta PRACTICA el día 8 o el día 15 de enero a más tardar ¿me puedes ayudar?

4 Respuestas

Respuesta
Para almacenar todas las palabras, necesitas utilizar alguna estructura de datos (cola, lista...). Yo te recomiendo que hagas una sencilla lista donde cada nodo contiene el registro Tpalabra.
Comienzas a leer el fichero, y carácter a carácter vas acumulando en un string auxiliar lo que vayas leyendo mientras que sea distinto de el espacio en blanco. Debes contar los caracteres leídos, y cuando encuentres el espacio, actualizas el tamaño de tu string auxiliar, estableciendo la posición 0 al numero de caracteres leídos. Seria una cosa del tipo:
c:char;
aux:String;
n:integer;
n=1;
read(fichero,c);
while(c<>' ') (*mientras c sea distinto de espacio en blanco*)
begin
aux[n]=c;
n:=n+1;
end;
aux[0]=chr(n-1);
Después de esto, recorres la lista buscando la palabra (que es aux). Si esta, incrementas su count, si no esta, la metes en la lista.
Todo lo anterior lo repites en un bucle hasta que termine el fichero.
Cuando acabe el fichero, solo tienes que recorres la lista, mostrando las palabras y su numero de ocurrencias (count).
Respuesta
1
Gredaga:
El programa no te lo puedo hacer, por la simple razón que hace como 4 años que no programo una linea de Pascal, así que hay muchos detalles de la sintxis que he olvidado, lo que si puedo hacer es darte un par de directivas para hacer este algoritmo que quizás te puedan ser útiles. Lo que yo haría con respecto a esto seria, ir buscando hasta encontrar un blanco, y voy metiendo los caracteres en un arreglo, por ejemplo, o puede ser también una lista enlazada o una simple varable de string que le vas concatenando el nuevo carácter, eso miralo vos como te es más fácil, cuando encuentro un blanco, quiere decir que tengo una palabra armada, lo que haría es armar una rutina de búsqueda en la lista de registros que tienes armada, si la encuentro aumento el contador, sino la encuentro solamente creo un nuevo registro pongo esta nueva palabra en el campo WORD, e inicializo COUNT en 1.
Otra opción, es ir armando una lista enlazada con las palabras que vas encontrando, después la recorres y vas actualizando los valores en el RECORD tpalabras, es otra opción, lo podes hacer primero y después lo único que haces es recorrer la lista e ir actualizando el registro RECORD.
Tené mucho cuidado cuando trabajas con archivos en PASCAL ya que si no lo cerras de manera apropiada te pueden traer problemas con la tabla de asignación de archivos, y o solo vas a tener problemas con lo que estabas haciendo en PASCAL sino también con otros archivos en tu PC, así que siempre cerra los archivos cuando los utilizas. Bueno espero que mi respuesta sea útil, cualquier cosa me preguntas.
Respuesta
1
Te podría dar detalles de implementación, pero no puedo perder todo mi tiempo en hacerte el programa completo si no es bajo un presupuesto.
Te cobraría unas 1.000 pts por hacer este trabajo.
Lo único que te puedo decir es que has de recorrer el texto hasta encontrar blancos, que son los limites de las palabras. Es decir, entre dos blancos, hay una palabra, y la almacenas en el registro.
Vas contando en un bucle y no tiene problema, es fácil.
Te voy a enviar otro programa para hacer y estoy de acuerdo con tu
presupuesto.La practica esa la tuve que presentar esta mañana y saque apenas un 5.Así que necesito sacar un 9 en la próxima para
compensar.Te enviare el enunciado mañana.Una vez me lo envíes
te lo ingresare en la cuenta corriente que tu me indiques.Si estas
de acuerdo me lo dices. OK
Respuesta
-1
Me gustaría ayudarte pero debido a la cantidad de mensajes y el poco tiempo libre que tengo en mi trabajo, me es imposible hacerte el programa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas