Először is ez itt alább milyen nyelven van és mit csinál (ha lehet részletesen)?
Szerintem ez pszeudokód.
"A pszeudokód az algoritmusok és általában az eljárások leírására használt olyan mesterséges formális nyelv, mely változókból és néhány állandó jelentésű szóból („foglalt” konstansok) áll, és (szándékosan) hasonlít a számítógépes programozási nyelvekre."
Ilyen nyelv tehát nincs, ezt arra használják, hogy az algoritmus gépi nyelvét az ember számára érthetőbbé tegyék (egyfajta szemléltetés).
A másik meg hogy akkor mégis mit csinál?
Hibafelderites:
Ciklus i=1,...,M
T(i):=0; S(i):=0;
Ciklus vege
Ciklus i=1,...,N
j:=az i. allomany elso blokkja
Ciklus
T(j):=T(j)+1; j:=az i. allomany kovetkezo blokkja
amig j valodi blokksorszam
Ciklus vege
Ciklus vege
j:=elso szabad blokk
Ciklus
S(j):=S(j)+1; j:=kovetkezo szabad blokk sorszama
amig j valodi blokksorszam
Ciklus vege
Ciklus i=1,...,M
Ha T(i)>0 es S(i)>0 akkor HIBA1
Ha T(i)=0 es S(i)=0 akkor HIBA2
Ciklus vege
Eljaras vege.
Jó párszor végigolvastam, volt amikor azt hittem értem , de nem.. Talán ha a körítés szöveget is megkapnánk.
addig tiszta, hogy a T és S tömböket vagy valamiket feltölt 0-val. Utána kib...ttul értelmetlen az egész. Ha meg lenne a szövegkörnyezet valószínűleg könnyebben értelmezhető lenne az egész, de így egy nagy... Nem tudom ki írta, de nem volt százas..
nemes.inf.elte.hu/2001/Nt01-1f2.doc
Ebben benne van.
Tetszik, hogy ilyen friss 2001-es anyagokból tanítanak. Egyébként a pszeudokódnak többek között nem az lenne a lényege, hogy nem kell egy adott nyelv szintaxisát ismerni, hogy érthető legyen? Merthogy ugye emberül van. Pedig szerintem ezt hamarabb megérteném, ha egy általam nem ismert nyelven lenne írva, csak rendesen formázva meg "amigjvalodiblokksorszam" és hasonlók helyett az adott nyelv while loopját vagy akármit használva, mert ez így számomra olvashatatlan.
Lehet, hogy velem van a baj.
Ó, ez egy verseny feladat volt 2001-ben, én is voltam ezen, csak már a 3-as kategóriában:)
Szóval blokkonként amit csinál:
Van egy T és S tömb, ami számokat tartalmaz, és a méretük M.
T jelenti majd azt, hogy az adott számú blokk hány fájl részt tartalmaz. S pedig azt, hogy hányszor szerepel a szabad blokkok listájában. Nyilván jó esetben az algoritmus végén T[i]+S[i] 1 kéne legyen minden i-re, azaz egy blokk pontosan 1 fájlrészt tartalmaz, vagy pedig üres (és csak 1x van az üres listában benne)
Az első blokk feltölti 0-kal.
A második blokk végigmegy a fájlokon.
A második blokkban a beágyazott ciklus végig megy az i. fájl darabjain, minden darabnál a T tömb megfelelő elemét növeli 1-gyel.
A harmadik blokk a szabad blokkok listáján megy végig (ugyanúgy, mintha az egy fájl lenne).
Az utolsó blokk az ellenőrzés:
Ha T(i)>0 és S(i)>0 azt jelenti, hogy az i. blokk szerepel egy fájl darabként is, de szabadnak is meg van jelölve. Ami ugye elég fura:) ekkor lesz végrehajtva a HIBA1
Ha T(i)=0 és S(i)=0, akkor az i. blokk se nem része egy fájlnak, se nem üres... akkor mi? ekkor hajtja végre a HIBA2-t.
Válaszok a feladat kérdéseire:
A,B-t leírtam a magyarázatnál.
C: Ha T(i)>1 akkor HIBA_EGY_BLOKK_TOBB_ALLOMANYHOZ_TARTOZIK
D: Ha S(i)>1 akkor HIBA_EGY_BLOKK_TOBBSZOR_SZEREPEL_A_SZABAD_BLOKKOK_KOZOTT
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!