Hi to all,
I have this homework with Pascal.
We have a text file that has some text in it (thetext.txt). we want to put all the words of the text and the frequency in another file without repeating the word(file name finalfile.txt).
Example:
thetext.txt has this text in it:
the quick brown fox jumps over a big brown bear that was sleeping on a big brown board.
this is how the finalfile should look.
finalfile.txt:
the 1
quick 1
brown 3
fox 1
jumps 1
over 1
a 2
big 2
bear 1
that 1
was 1
sleeping 1
on 1
board 1
-------------------------------
I tried to solve this exercise this way.
1st we read the thetext.txt letter one by one and merge them in a string. than use a linked list to keep the word and the frequency. If for instance one of the words is in the list than we raise the frequency by one otherwise we add the word to the list and set the frequency to one.
at the end we write all the elements of the list in the finalfile.txt and we're done.
BUT when i run the program i wrote it just gets stuck!
i am pasting the code so you'll see what i wrote.
Please if anyone can help me in finding the bug, i would really appreciate that.
Have a nice weekend :D
Program DenduridheFjale;
Uses WinCRT;
Type
str=string[15];
fjale=^liste;
liste=record
fjala:string[15];
den:integer;
tjetri:fjale;
end;
var listajone,element,org:fjale; ff,fp:text; ch:char;fj:str;
Procedure Kontrollo_listen(Var l:fjale;fj2:str);
Var tmp,tmp2,koka:fjale; c:boolean;
Begin
c:=False;
tmp:=l; koka:=l;
If tmp=nil then
Begin
new(tmp2);
tmp2^.fjala:=fj2;
tmp2^.den:=1;
tmp2^.tjetri:=tmp;
tmp:=tmp2;
l:=tmp;
dispose(tmp2);
End
else
Begin
while tmp<>nil do
Begin
If tmp^.fjala=fj2 then
Begin
tmp^.den:=tmp^.den+1;
c:=true;
End;
tmp:=tmp^.tjetri;
End;
End;
If c=false then
Begin
new(tmp2);
tmp2^.fjala:=fj2;
tmp2^.den:=1;
tmp2^.tjetri:=koka;
koka:=tmp2;
l:=koka;
dispose(tmp2);
End;
End;
Begin {Programi Kryesor}
Assign(ff,'c:\SKTP\SKTXT\tekst.txt'); Reset(ff);
Assign(fp,'c:\SKTP\SKTXT\fjaleden.txt'); Rewrite(fp);
listajone:=nil;
new(element);
fj:='';
While not eof(ff) do
Begin
While not eoln(ff) do
Begin
Read(ff,ch);
If ((ch<>'') and (ch<>' ') and (ch<>',') and (ch<>'.') and (ch<>'?') and (ch<>'!')) then
fj:=fj+ch
else
If fj<>'' then
Begin
Kontrollo_listen(listajone,fj);
fj:='';
End;
End;
Readln(ff);
End;
org:=listajone;
while org<>nil do
Begin
writeln(fp,org^.fjala,org^.den);
org:=org^.tjetri;
End;
Close(ff);Close(fp);
END.