XLI, 25. märts 1994. a.

Lõppvooru ülesanded


Koostada programmid järgmiste ülesannete lahendamiseks. Programmide tekstid paigutada Teile antud kettale failidesse, mille nimi on saadud ülesande numbri lisamisel Teie perekonnanime lõppu, näiteks TAMM1.PAS, TAMM2.PAS, TAMM3.PAS. Igale ülesandele anda ainult üks lahendus.

  • Iga programm peab alustama tööd autori, kooli, klassi ja ülesande teatamisega (viimaseks piisab ühest lausest).
  • Iga programm peab töötama tsüklis, küsides pärast ülesande lahendamist, kas lõpetada või sisestada uued andmed.
  • Kui andmed sisestatakse failist, siis küsitakse kasutajalt faili nimi.
  • Programmid ei pea kontrollima sisendandmete vastavust ülesande tekstis olevatele tingimustele. Testimisel kasutab komisjon ainult korrektseid algandmeid.
  • Programm peab reageerima adekvaatselt ja andma välja mõistliku teate (mitte katkestama tööd või jätma vastust andmata) ka selliste andmete korral, millele reageerimine ei ole ülesande tekstis kirjeldatud, aga mis vastavad ülesandes antud sisendtingimustele.

Hinnatakse programmi tööd, mitte teksti. Ülesannete tekstides mainitud failid on olemas ka Teile antud ketastel.


1. ESITUS ALGARVUDE ASTMETENA ( 10 p. )

Sisestada positiivne kuni 7-kohaline täisarv ja leida tema esitus algarvude astmete korrutisena. Väljastamisel paigutada astmenäitajad astme alustest ühe rea võrra kõrgemale, näiteks

                             9  2     2
                  3902976 = 2 *3 *7*11 .

2. INTERPRETAATOR ( 20 p. )

Vaatleme omistamist ja trükki võimaldavat keelt, mille omistamisoperaator on kujul

<muutuja>:=<täisarv>,
<muutuja>:=<muutuja>,
<muutuja>:=<muutuja>+<muutuja> või
<muutuja>:=<muutuja>-<muutuja>    ja
väljundoperaator kujul
PRINT(<muutuja>).

Operaator PRINT väljastab ekraanile muutuja nime, võrdusmärgi ja muutuja väärtuse ning viib kursori uuele reale. Muutujatena kasutatakse tähti a..z.

Lugeda tekstifailist kuni 10-realine programm, mille igal real on üks operaator.

Väljastada ekraanile faili nimi, programm, miinustest koosnev vaherida ja täita programm, väljastades tulemused ekraanile. Kui mingil real kasutatakse väärtustamata muutujaid, siis anda selle kohta teade ja lõpetada interpreteerimine.

Ületäitumise võimalust pole vaja uurida.

Näiteid:

FAIL: TEST2.1
x:=7
PRINT(x)
y:=y+x
------------
x=7
Rida 3: y väärtustamata

FAIL: TEST2.2
x:=7
y:=x+x
PRINT(y)
z:=3
y:=y-z
PRINT(y)
PRINT(x)
-----------
y=14
y=11
x=7

3. KASVAV SÕNADE JADA ( 20 p. )

Tekstifailis on igal real üks tähtedest a..z koostatud mittetühi sõna (kokku kuni 20 sõna, pikkusega kuni 30). Koostada nendest sõnadest võimalikult pikk sõnade jada, kus iga eelmine sõna on järgmise sõna algus.

Vastuse andmisel paigutage algandmed tulbana ekraani vasakusse serva, koostatud jada koos sõnade järjekorranumbritega - tulpa alates 41. positsioonist.

Ekraani näide:

FAIL: TEST3.1                           JADA:
----------------------------------------------------
acabbaaa                                1.ac
ac                                      2.aca
aca                                     3.acabb
acabbaaa                                4.acabba
b                                       5.acabbaaa
bb                                      6.acabbaaa
acabba
acabb