Dokumentáció a 2.évfolyam, 1.féléves beadandójához

Felhasználói dokumentáció


Feladat:

Egy tetszõleges vers gyakoriság-elemzése.

Környezet:

IBM PC-kompatibilis gép, DOS kompatibilis operációs rendszer (futtatva csak OS/2 Warp 4.0-n volt).

Használat:

A program indítása: A program az a:infalk.exe beírásával indítható, ahol a az »a:» a program elérési útja, a infalk.exe pedig a neve.

A program bemenete: Eg tetszõleges szöveg (szövegfile-bõl vagy billenty¹zetrõl).

A program eredménye: Az alábbi adatok:

Összes sor, szó, bet¹. A sorok hossza (karakterben), az egy sorra juto szavak szama (kerekített átlag), az egyes szavak hossza, a szavak atlagos hossza, az ASCII-437-es kódtábla (amerikai kiosztás) karaktereinek elõfordulása (db/elem).

Hibalehetõségek:

Ha a bevitt adat eleme a program által megatt tartománynak, akkor azt az atot újra bekéri.

Bármilyen egyéb probléma esetén lépjen kapcsolatba a program szerzõjével, akit (szamosp(a)inf.elte.hu) címen keresztül tud elérni.


Fejlesztõi kumentáció


Feladat:

Egy tetszõleges vers gyakoriság-elemzése.

Specifikáció:

Bemenet: sÎszöveg

Kimenet: db:tömb[0..255] γ; hossz:tömb[1..max] γ;

betudb,szodb,sordb γ;

szo,sor:array[1..max] of rec; {max: legfeljebb ennyi sort engedünk meg: teszteléskor ennek a maximuma "maxint/4" volt - ez azonban több helyet foglal}

rec=rekord hossza γ;

zgsmsh,zgtmsh,melymgr,magasmgrγ;

Elõfeltétel: Nincs. {Ha nem létezik az input-file, akkor hibaüzenetet küld.}

Utófeltétel: Megszámolás(nem(eof[szöveg]), a szöveg bet¹i, betudb),

Megszámolás(nem(eof[szöveg]), a szöveg szavai, szodb),

Megszámolás(nem(eof[szöveg]), a szöveg sorai, sordb),

"i-re (i γ+): szo[i].hossza:=¯bet¹k, ahol bet¹Îszo[i].

"i-re (iγ+): sor[i].hossza:=¯bet¹k, ahol bet¹Îsor[i].


Környezet:

IBM PC-kompatibilis gép, S kompatibilis operációs rendszer.

(teszteléskor: OS/2 Warp 4.0 magyar, Fp 5.0)

Turbo Pascal (min. 5.5) fejlesztõi környezet, Crt unit. (tesztelve: TP 7.0)

Használat:

A program indítása:

A program indítása: A program az a:infalk.exe beírásával indítható, ahol a az »a:» a program elérési útja, a infalk.exe pedig a neve.


A feladatot megoldó program mûködésének algoritmusa - egy lehetséges változat:


Eljárások:


Alapprogram

ciklus

foprogram;

Ki:('Ha be akarja fejezni, nyomja meg az ESC-billentyut!');

Be:(vege);

ciklus amig (vege=#27);

Alapprogram vége




Fprogram eljárás;

változó kihova,behonnan:char; fnev:string;

szoveg:string; tart:text; cv:egész;x:char;

eljárás nullaz;

változó j:egész;

eljárás-kezdet

betudb:=0; sordb:=1; szodb:=1;

fvagy j:=1 to max eljárás-kezdet

szo[j].hossza:=0; sor[j].hossza:=0; eljárás-vége;

zgsmsh:=0; zgtmsh:=0; melymgr:=0; magasmgr:=0;

eljárás-vége;

eljárás cim;

eljárás-kezdet

Ki:('Vers gyakorisag-mero program':2);

Ki:('Szamoskozi Peter - 2000.november':3);

Ki:;

eljárás-vége;

eljárás befele;

változó i:egész;

eljárás-kezdet

nullaz;

clrscr;

cim;

ciklus

Ki:;

Ki:('Honnan olvassam a szoveget? (File, Bill.)'); Be:(behonnan);

hozzarendel(szf,'e:\1\2\file.txt');

ciklus amig ((behonnan='f') vagy (behonnan='b'));

ha behonnan='f' akkor hozzarendel(szf,'e:\1\2\file.txt')

egyébként eljárás-kezdet hozzarendel(tart,'tart.txt'); reKi:(tart);

Ki:('A befejezo-karakter a "kukac" (_a_)'); cv:=1;

ciklus

Ki:('Kerem a(z) ',cv,'. sort: ');

Be:(szoveg); Ki:(tart,szoveg); x:=szoveg[length(szoveg)];

növel(cv);

ciklus amig (x='_a_'); close(tart);

hozzarendel(szf,'tart.txt'); eljárás-vége;

fvagy i:=1 to 255 db[i]:=0;

eljárás-vége; {proc. befele}

eljárás-kezdet

befele;

Ki:('Szamolok...'); szamol;

ciklus

Ki:('Hova irjam az eredmenyt? /File, Monitvagy/'); Be:(kihova);

ciklus amig ((kihova='f') vagy (kihova='m'));

ha kihova='f' akkor hozzarendel(f,'ossz.txt') egyébként hozzarendelcrt(f);

ha (kihova='f') akkor Ki:('Az eredmenyek az "ossz.txt" file-ban vannak')

egyébként Ki:('Az eredmenyek: ');

kiir(f);

Fõprogram eljárás-vége;


Szamol eljárás;

eljárás szonakvege(c:char; változó szvege:egész);

változó sv:egész;

eljárás-kezdet

sv:=vagyd(c);

ha (sv=32) akkor szvege:=0 egyébként szvege:=1;

eljárás-vége;

eljárás sorvege(változó c:char; változó svege:egész);

változó sv:egész;

eljárás-kezdet

sv:=vagyd(c);

ha (sv=13) akkor svege:=0 egyébként svege:=1;

eljárás-vége;

eljárás fajta;

változó li:egész; k:char; i,j:egész;

eljárás-kezdet

megnyit(szf);

i:=1; j:=1;

ciklus amig nem(eof(szf)) eljárás-kezdet

Be:(szf,k); növel(db[vagyd(k)]); növel(betudb); k:=nagybet¹(k);

ha ((k='B') vagy (k='D') vagy (k='G') vagy (k='V') vagy (k='Z')) akkor növel(zgsmsh)

egyébként ha ((k='F') vagy (k='H') vagy (k='K') vagy (k='P') vagy (k='S') vagy (k='T')) akkor növel(zgtmsh)

egyébként ha ((k='A') vagy (k='O') vagy (k='U')) akkor növel(melymgr)

egyébként ha ((k='E') vagy (k='I')) akkor növel(magasmgr);

sorvege(k,li);

ha (li=1) akkor növel(sor[sordb].hossza)

egyébként eljárás-kezdet növel(sordb); {növel(i);} eljárás-vége;

szonakvege(k,li);

ha (li=1) akkor növel(szo[szodb].hossza)

egyébként növel(szodb); {növel(j); space}

eljárás-vége;

zár(szf);

eljárás-vége;

eljárás-kezdet

fajta;

Számol eljárás-vége;


Kiir eljárás (változó f:szöveg);

változó i:egész; szoatlag:egész;

yy,mm,dd,yow:wvagyd; {a datumhoz}

eljárás kicim;

eljárás-kezdet

Ki:(f,' ');

Ki:(f,' A megadott szoveg gyakorisagi elemzese');

AktualisDatum(yy,mm,dd,yow);

Ki:(f,' Az elemzes keszult: ',yy,'.',mm,'.',dd,'.');

Ki:(f,'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

Ki:(f,' ');

eljárás-vége;

eljárás-kezdet

reKi:(f);

kicim;

Ki:(f,'Az osszes sor: '); Ki:(f,sordb);

Ki:(f,' ');

szodb:=db[32]+sordb-2;

Ki:(f,'A szavak szama: '); Ki:(f,szodb);

Ki:(f,' ');

Ki:(f,'A sorok hossza (sor/karakter)');

fvagy i:=1 to sordb eljárás-kezdet

Ki:(f,i); Ki:(f,' - ');

ha ((i>2) and ((i mod 10)=0)) akkor

eljárás-kezdet Ki:(f,sor[i].hossza); Ki:(f,','); eljárás-vége

egyébként eljárás-kezdet Ki:(f,sor[i].hossza); Ki:(f,', '); eljárás-vége;

eljárás-vége;

Ki:(f,''); Ki:(f,' ');

Ki:(f,'Az egy sorra juto szavak szama (atlag): ');

Ki:(f,(szodb maradékosan-osztva sordb));

Ki:(f,'');

Ki:(f,'A szavak hossza: (szo[hossz])');

fvagy i:=1 to szodb eljárás-kezdet {Ez nem teljesen OK a TP7.0-ban}


Ki:(f,i); Ki:(f,' - ');

ha ((i>2) and ((i mod 10)=0)) akkor

eljárás-kezdet Ki:(f,szo[i].hossza); Ki:(f,','); eljárás-vége

egyébként eljárás-kezdet Ki:(f,szo[i].hossza); Ki:(f,', '); eljárás-vége;

eljárás-vége;

Ki:(f,''); Ki:(f,' ');

Ki:(f,'A szavak atlagos hossza: ');

szoatlag:=0;

fvagy i:=1 to szodb eljárás-kezdet

szoatlag:=(szoatlag+szo[i].hossza);

eljárás-vége;

szoatlag:=(szoatlag maradékosan-osztva szodb);

Ki:(f,szoatlag);

Ki:(f,' ');

Ki:(f,'Az szovegben levo betuk, ABC-szerint, Pl: betu(db)');

fvagy i:=32 to 255 eljárás-kezdet

Ki:(f,chr(i)); Ki:(f,':'); Ki:(f,'['); Ki:(f,db[i]); Ki:(f,']');

Ki:(f,', ');

ha ((i mod 10)=0) akkor Ki:(f,'');

eljárás-vége;

Ki:(f,''); Ki:(f,' ');

Ki:(f,'A kulonbozo betufajtak darabszama');

Ki:(f,'zonges massalhangzok: '); Ki:(f,zgsmsh);

Ki:(f,'zongetlen massalhangzok: '); Ki:(f,zgtmsh);

Ki:(f,'mely, (rovid) maganhangzok: '); Ki:(f,melymgr);

{**}Ki:(f,'');

Ki:(f,'magas (rovid) maganhangzok: '); Ki:(f,magasmgr);

Kiir eljárás-vége;


Deklaráció:


Konstans max=kerekít(maxint/4); {szo es sorhossz}

Típus rekord=record hossza:egész; eljárás-vége;

Változó db:array[0..255] egész;

hossz:tömb[1..max] egész;

betudb,szodb,sordb:egész;

szo,sor:tömb[1..max] rekord;

zgsmsh,zgtmsh,melymgr,magasmgr:egész;

f:szöveg; {a kimenetnek}

szf:szöveg; {innen olvas}

vege:karakter;



Budapest, 2000. november 8.

Szamosközi Péter