Hirdetés

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

  • pckownz

    őstag

    Sziasztok.

    Lazarusban tanulok pascal nyelvet, és egy érdekes hibát(?) találtam.
    2tömbbe random generált számokat növekvő, majd csökkenő sorrendbe kell elhelyeznünk.

    function er(a:array of integer):boolean;
    var ez:boolean;
    begin

    i:=0;
    repeat
    inc(i);
    if a[i]<=a[i+1] then ez:=true else ez:=false;
    until (i=max-1) or (ez=false);
    er:=ez;
    end;

    Ez az első tömb növekvő sorrendét ellenörző funkciója, ennek a funkció visszatérése alapján küldjük tovább rendezésre ha kell. Ez működik.

    function mr(b:array of integer):boolean;
    var ezz:boolean;
    begin
    i:=0;
    repeat
    inc(i);
    if b[i]>=b[i+1] then ezz:=true else ezz:=false;
    until (i=max-1) or (ezz=false); //????
    mr:=ezz;
    end;

    Ezzel a második tömbünket vizsgáljuk, hogy csökkenő-e.
    A max egy 10értékű integer típusú konstans.
    Ez a funkció minden esetben FALSE értékkel tér vissza.
    Akkor is, ha már átment a rendező algoritmuson, és tökéletes a sorrend.
    Viszont ha csak 8-ig futtatom, akkor ugye a 9. elemig vizsgál és TRUE értéket ad vissza. Ha vizsgálja a 10. elemünket is, minden esetben false.

    Valami ötlet? :R

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