Lécci, Lécci tanícsatok meg programozni
  • Aquli
    #135
    Hello!
    Segítséget szeretnék kérni egy Pascal programmal kapcsolatban. A mostani emelt-szintű érettségi programozási feladatát akarom megcsinálni. A lényeg, hogy van egy lottosz.dat nevű fájl, amiben a 2003-as év 51 hetének lottoszámait tartalmazza, minden sorban 5 szám szóközökkel elválasztva. A lényeg, hogy ebből kell adatokat kiolvasni többféle célra. Van, amikor csak a megadott számú sort ki kell iratni a képernyőre, van amikor az adatokkal számolni kell (statisztikai céllal).

    Én úgy gondoltam, hogy a fájlt típusos fájlként deklarálom, a típus pedig 5 integerből álló tömb.
    Ebben az esetben a fájl minden sora egy-egy elemnek számítana, mert a szóközökkel elválasztott 5 szám egy-egy tömböt alkot. Vagy ez így nem működhet? Mert én így próbáltam egy ilyen tömbbe beolvasni a fájl n. elemét, de a tömbbe nem a megfelelő számok kerültek, hanem 4- és 5-jegyű számok, amik, nem tudom honnan kerültek oda. Hogy értsétek a dolgot, berakom a forrást:

    program lotto;
    uses crt;
    type comb=array [1..5] of integer;
    var lottosz : file of comb;
    szamok,temp : comb;
    cs,i,n : integer;
    sz : string;

    begin
    clrscr;
    (*Az 52. hét nyeroszámainak bekérése*)
    for i:=1 to 5 do begin
    write('Irja be az 52. hét ',i,'. nyeroszámát!');
    readln(szamok[i]);
    end;

    (*A számok sorbarendezése és kiírása*)
    for i:=1 to 4 do begin
    for n:=1 to 4 do begin
    if szamok[n]>szamok[n+1] then begin
    cs:=szamok[n];
    szamok[n]:=szamok[n+1];
    szamok[n+1]:=cs;
    end;
    end;
    end;
    write('Az 52. hét felh. által megadott nyeroszámai: ');
    for i:=1 to 5 do
    write(szamok[i],' ');

    (*1-51 közötti szám bekérése, a számnak megfelelo sorszámú hét
    nyeroszámainak kiírása*)
    writeln;
    write('Irjon be egy számot 1-tol 51-ig'); readln(n);
    assign(lottosz, 'lottosz.dat');
    reset(lottosz);
    seek(lottosz,n);
    read(lottosz,temp);
    write('A(z) ',n,'. hét lottoszámai: ');
    for i:=1 to 5 do
    write(temp[i],' ');
    end.

    Nah. Az első két rész nem számít, az az első részfeladathoz kell, de azok sikerültek is. A harmadik rész lenne a lényeg, létszi nézze meg nekem valaki, hogy miért nem működi. Az általam létrehozott comb típus nem megfelelő a fájlhoz? Vagy ezt szöveges fájlként kellen kezelni?

    Ja és itt van a lottosz.dat egy részlete:

    37 42 44 61 62
    18 42 54 83 89
    5 12 31 53 60
    1 28 47 56 70

    Na így néz ki a fájl, csak 51 soron keresztül.

    Előre is köszi.