Hirdetés

Új hozzászólás Aktív témák

  • Protezis

    őstag

    Nah nekem is ez a kötprogom :))
    az én progim elszáll vhol, bár a rendezés nincs még benne.
    Lehet egy kicsit túlbonyolítottam:

    Program kotprog;

    Type
    mutato = ^tomb;
    tomb = array [0..10000] Of string;

    Var
    szo: mutato;
    szohossz: integer;

    function betuszamlalof(filenev: string) : word;
    var
    szoveg: text;
    tmpszoveg: string;
    db: integer;
    begin
    assign(szoveg, filenev);
    reset(szoveg);
    db:=0;
    while not eof(szoveg) do
    begin
    readln(szoveg, tmpszoveg);
    db:=db+length(tmpszoveg);
    end;
    betuszamlalof:= db;
    end;

    function szokeres(filenev: string; szohossz: integer): mutato;
    var
    szo: mutato;
    szoveg: text;
    sor: string;
    i: byte;
    betuszamlalo: longint;
    ujszo: boolean;
    szoszamlalo: longint;
    mem: word;
    begin
    assign(szoveg, filenev);
    reset(szoveg);
    {Megszámoljuk a betuszamlalo fügvénnyel a szövegfájlban található karakterek számát,
    és lefoglalunk akkora memóriát, amekkorára maximálisan szükségünk van.
    Ha a fájlban minden páros sorszámú helyén 'szemét' karakter van és minden páratlanadik helyén
    betű, vagy kötőjel, akkor n db karakter esetén (n div 2)+1 szó (jó karakter) van a szövegben.
    (Így ezek mindegyike 1 betűből áll)}
    mem:=((betuszamlalof('be.txt') Div 2) + 1)*szohossz;
    GetMem(szo, mem);
    betuszamlalo:=-1;
    szoszamlalo:=0;
    ujszo:=false;
    while not eof(szoveg) do
    begin
    readln(szoveg, sor);
    for i:=0 to (length(sor)-1) do
    begin
    if ((sor[i+1]>='a') and (sor[i+1]<='z')) or ((sor[i+1]>='A') and (sor[i+1]<='Z')) or (sor[i+1]='-') then
    begin
    szo^[szoszamlalo][i-betuszamlalo]:=sor[i+1];
    ujszo:=true;
    end
    else
    begin
    betuszamlalo:=i;
    if ujszo then
    begin
    szoszamlalo:=szoszamlalo+1;
    ujszo:=false;
    end;
    end;
    end;
    end;
    szokeres:=szo;
    end;


    Begin
    readln(szohossz);
    szo:=szokeres('be.txt',szohossz);
    writeln(szo^[0][1]);


    End.

    A hiba fpc-vel fordítás után:
    Runtime error 5 at 0x0040106A
    0x0040106A
    0x0040119E
    0x00401235

    Bocs a hosszú hozzászólásért!

Új hozzászólás Aktív témák