Ayuda con Pascal! Palabras en un texto
Bueno la consigna que me han dado es:
Realizar un programa que calcule la frecuencia de las palabras de un texto. Utilizar un árbol binario para su resolución.
Bueno lo que yo hice por un lado fue declarar los tipos:
type
tipoinfo=string;
puntero=^tiponodo;
tiponodo=record
info:tipoinfo;
izq:puntero;
der:puntero;
frec:integer;
end;
En frec se almacena la frecuencia de veces que aparece la palabra contenida en el nodo.
Luego hice las funciones clásicas de un árbol binario, crearnodo insertarnodo , y un recorrido para mostrar por pantalla.
function crearnodo(por:tipoinfo):puntero;
var
t:puntero;
begin
new(t);
t^.info:=por;
t^.izq:=nil;
t^.der:=nil;
crearnodo:=t;
end;
procedure insertarnodo (var r:puntero;por:tipoinfo);
begin
if r=nil then
r:=crearnodo(por)
else
if x<r^.info then
insertarnodo (r^.izq,x)
else
insertarnodo (r^.der,x);
end;
procedure preorden (p:puntero);
begin
if p<>nil then
begin
write (p^.info);
preorden (p^.izq);
preorden (p^.der);
end;
end;
Luego, la parte donde me parece tengo el problema es esta:
function captar(te:tipoinfo;a:puntero):string;
var
por,l:integer;
d:puntero;
begin
writeln ('Ingrese el texto');
readln (te);
l:=length(te);
for por:=1 to l do
begin
if letra[por]<>' ' then
pal:=pal+letra[por];
if direccion(a,pal)<>nil then
begin
insertarnodo(a,pal);
pal:=''
end
else
begin
d:=direccion(a,letra[x]);
d^.frec:=d^.frec+1;
end;
end;
end;
Aquí tomo el texto y hasta su duración calculo las palabras.
Desde ya les agradecería por su ayuda..
El profesor me dijo que tengo que hacer una función para saber si la palabra esta repetida para aumentar en un la frecuencia, pero no supe hacerla:
function dirección (temp:puntero;elemento:tipoinfo):puntero;
begin
{
if r=nil then
writeln ('árbol vacío')
else }
if elemento=r^.info then
dirección:=r
else
if elemento<r^.info then
begin
temp:=r^.izq;
dirección (temp,elemento);
end
else
begin
temp:=r^.der;
dirección (temp,elemento);
end;
end;
Esa es la mía, pero debe estar mal, muchas gracias...