XXXIX, 1991.-1992. õppeaasta

Lõppvooru ülesanded


Üldnõuded

Käivitamisel peab programm teatama:

1. mida ta teeb,

2. autori nime, kooli ja klassi.

Hinnatakse ka algandmete sisestamise mugavust ja seda, kas ja kui mugavalt saab andmeid enne lahendamist üle vaadata ja parandada. Andmete sisestamisel peab programm teatama piirid andmete hulgale ja suurusele (ainevaldkonna, mitte programmeerimiskeele terminites). Kui programm ootab kasutaja mingit aktsiooni, olgu selle kohta ekraanil teade.

Vastus tuleb väljastada nii, et samal ajal oleksid nähtaval ka algandmed. Tõsiseks puuduseks peetakse, kui vastust ei saa lugeda, sest osa temast keritakse väljundi suure mahu korral ekraanilt välja.


1. ülesanne ( 30 p. )

Sisestada string. Kontrollida, kas on tegemist korrektselt kirjutatud täisarvuliste kordajatega ruutvõrrandiga, kus tundmatu on x, ruutliikme kordaja erineb nullist ja kus ruut on kirjutatud sümboli ^ abil ( näiteks -32x^2+x-7=0 lugeda korrektseks ruutvõrrandiks).

Ebakorrektsuse puhul anda teade vea iseloomu kohta ja näidata kursoriga vea asukoht stringis.


2. ülesanne ( 70 p. )

Sisestada jagatav ja jagaja (positiivsed täisarvud, võivad olla ka väga suured) ning kujutada ekraanil jäägiga jagamine tavalise algoritmi järgi, paigutades arvud järgmises näites kasutatud viisil:

 56789012345678901234:200000000000=283945061
-400000000000                     jääk 145678901234
 ------------
 1678901234567
-1600000000000
 -------------
   789012345678
  -600000000000
   ------------
   1890123456789
  -1800000000000
   -------------
     901234567890
    -800000000000
     ------------
     1012345678901
    -1000000000000
     -------------
       1234567890123
      -1200000000000
      --------------
         345678901234
        -200000000000
         ------------
         145678901234

Maksimumpunktide saamiseks peab programm töötama õigesti kõigi andmetega, mille puhul väljastatav mahub laiuse poolest ekraanile ning võimaldama vajaduse korral lahutamistehete osa üles-alla kerida, kusjuures ülemine rida jääb paigale.

30 punkti võib saada, kui programm töötab õigesti algandmetega, mis on kasutatava arvutüübiga määratud piirides.

50 punkti jaoks piisab, kui selline piirang on tehtud ainult jagajale.

Programm peab andmete sisestamisel teatama nendele esitatavad piirangud ja kontrollima, kas nad on täidetud.


3. ülesanne ( 100 p.)

Inimkonnast eraldatud saarel leiti tundmatu rahvas. Pärismaalaste omavaheliste sugulussidemete uurimiseks tähistati elanikud numbritega 1,2,3 jne. ning igaüks näitas, kes on tema isa ja kes ema. Kui vanem oli juba surnud, näitas pärismaalane sõrmega taeva poole.

Kirjutada programm, mis kõigepealt sisestab andmed elanike vanemate kohta. Pärast seda saab kasutaja valida menüüst järgmiste alamülesannete lahendamise vahel:

1. sisestada isiku number ja leida tema kõik elusad esivanemad (vanemad+vanavanemad+...),

2. leida isik, kellel saab tuvastada suurima arvu järglasi (lapsi+ lapselapsi+...),

3. leida isik, kellel on olemas kõige kaugem järglane (põlvkondade arvu mõttes),

4. jagada pärismaalased niimoodi meesteks ja naisteks, et see pole vastuolus andmetega,

5. leida selline elanike järjestus vanuse järgi, mis pole vastuolus andmetega.

Kui mõni alamülesanne on programmeerimata, siis peab see paistma menüüst. Peale alamülesande lahendamist antakse juhtimine menüüsse tagasi.

Vastused anda ekraanil koos põhjendavate andmetega (näiteks alamülesande 2 korral näidata ka leitud isiku kõik järglased koos nende vanemate numbritega).