Nemes Tihamér OKSzTV'93

Első forduló

9-10. osztályosok

1993. január 14. 1400-1700


1. feladat: Szövegelés (10 pont)


2. feladat: Portia ládikái (13 pont)


3. feladat: Táblázatkezelő (11 pont)


4. feladat: Bitvektorok (7 pont)

AND OR XOR
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0

5. feladat: LOGO (10 pont)

 
PENUP ettől kezdve mozgás közben nem rajzol
PENDOWN ettől kezdve mozgás közben rajzol
FORWARD n
BACK n
az aktuális helytől az aktuális irányban n egységnyit lép előre, illetve hátra
LEFT f
RIGHT f
az aktuális irányhoz képest f fokkal elfordul balra, illetve jobbra
REPEAT n [utasítás] az utasítás utasítássorozatot n-szer megismétli

6. feladat: Lnko (12 pont)

A)
Lnko(A,B):
  Ciklus amíg A<>B
    Ha A>B akkor A:=A-B
           különben B:=B-A
  Ciklus vége
  Lnko:=A
Eljárás vége
B)
Lnko(A,B):
  X:=1 : H:=min(A/2, B/2)
  Ciklus I=2-től H-ig
    Ha I|A és I|B akkor X:=I
  Ciklus vége
  Lnko:=X
Eljárás vége
C)
Lnko(A, B):
  Ha A<B akkor Csere(A, B)
  Ciklus amíg B<>0
    X:=A MOD B : A:=B : B:=X
  Ciklus vége
  Lnko:=A
Eljárás vége
D)
Lnko(A, B):
  X:=A : Y:=B
  Ciklus amíg X<>Y
    Ha X<Y akkor X:=X+A
           különben Y:=Y+B
  Ciklus vége
  Lnko:=X/(A*B)
Eljárás vége

7. feladat: Bagdadi tolvaj (10 pont)

    1. A tolvaj felvonóval közlekedik az emeletek között. A felvonó 10 emeletet tesz meg percenként. A felvonó nem mehet át olyan emeleten, ahol tűz van.
    2. A tűz kitörésekor a felvonó az 1. emeleten áll. A tűz lefelé terjed, percenként egy-egy emeletet tesz meg. A tolvaj élete veszélybe kerül, ha a tűz eléri azt az emeletet, amelyen éppen a zsákkal bíbelődik.
    3. A tolvajnak emeletenként 10 másodpercre van szüksége a zsák arany elhozására. Mihelyts megkaparintotta a zsákot, azonnal elhagyja az emeletet.
    A bemeneti adatok között az első annak az emeletnek a sorszáma, ahol kiütött a tűz; ezután számpárok következnek, a sorozatot a 0 zárja. A számpárok első tagja egy-egy emelet sorszáma, a második pedig az ott taálható aranyak száma.
     
    VAR toronyhaz: ARRAY[1..150] OF INTEGER;
        tuzKezdete, felsoEmelet, aranyakSzama, i : INTEGER;
    BEGIN
      FOR i:=1 TO 150 DO toronyhaz[i]:=0;
      read(tuzKezdete, i);
      WHILE i<>0 DO read(toronyhaz[i], i);
                  (*töltsd meg a házat arannyal *)
      felsoEmelet:=(30*tuzKezdete-4) DIV 33;
                   (*meddig lehet felmenni? *)
      aranyakSzama:=0;
                   (*számold össze az aranyakat *)
      FOR i:=1 TO felsoEmelet DO
      aranyakSzama:=aranyakSzama+toronyhaz[i];
      writeLn(aranyakSzama)
                   (*írd ki az eredményt *)
    END.
       
    Kérdések:
      a) Mi van akkor, ha a számpárokat nem az emeletek növekvő sorrendjében adjuk meg?

      b) Mi van akkor, ha egy emelet sorszáma több számpár első tagjaként is előfordul?

      c) Mi van akkor, ha egy emelet sorszáma egyetlen számpárban sem fordul elő?

      d) A (30*tuzKezdete-4) DIV 33 kifejezésben az egyik állandó hibás. Melyik az, mi a helyes értéke, és miért?

      e) Ha tűz a 32. emeleten üt ki, melyik emeleten láthat "munkához" a tolvaj?


8. feladat: Karaván (7 pont)

Egy számítógépes adatbázis létrehozásához az adott feladatban előforduló dolgokat (az úgynevezett egyedeket) osztályozzuk, azaz halmazokba (úgynevezett egyedtípusokba) soroljuk. Az egyedtípust téglalappal, az egyedek közötti kapcsolatokat pedig a téglalapokat összekötő vonalakkal ábrázoljuk. Háromfelé ágazó vonal, úgyenvezett "szarkaláb" jelöli, ha egy egyed több más egyeddel is kapcsolatban lehet. Nézzük a következő példát!

A megyék halmazában megyék, a járásokéban járások, a városokéban városok vannak. A megyék halmazából kiválasztott tetszőleges megyében több járás is lehet, de minden járás csak egy megyéhez tartozhat. Ehhez hasonlóan egy járásban több város is lehet stb. A megyék és a városok kapcsolatát nem jelöltük külön vonallal, mert egy megyében a városok halmaza ugyanaz, mint az adott megyéhez tartozó járásokban lévő városok halmaza.

A sivatagi karavántúrákat szervező KALEF Kft. a következő leírást adta számítógépes nyilvántartó rendszerének megtervezéséhez: "Minden karavánt tapasztalt túravezető kísér. A karavánokra a turisták helyet foglalhatnak. A karavánok különböző időpontokban indulnak, ezért egy vezető több karavánt is vezethet, és egy turista több karavánra is jelentkezhet." Másold le az alábbi ábrát, és egészítsd ki a hiányzó nevekkel és összekötő vonalakkal!


Elérhető összpontszám: 80 pont