I voor. 15. detsember 1998. a.

Informaatikaülesanded

NELI TEHET EKRAANIL


Meie esimene bukett ülesandeid on pühendatud kõige lihtsamale: neljale aritmeetikatehtele. Tuleb koostada programmid, mis sisestavad tehete operandid ja kirjutavad ekraanile tehte vahetulemused ja lõpptulemuse enam-vähem sellisel kujul, nagu me oleme õppinud matemaatika tunnis. Iga ülesande eest võib saada 25 punkti.

Loomulikult saab iga aritmeetilise tehte tulemuse ühe programmireaga välja arvutada. Järgnevate ülesannete põhiline osa seisneb tegelikult selles, et programmeerida operandide, vahetulemuste ja lõppresultaadi korrektne ekraanile paigutamine. Pärisprogrammeerijale pole see aga mingi uudis, et tulemuste kasutajasõbralik esitamine võib rohkem "auru" nõuda kui nende väljaarvutamine. Mõnevõrra erinev on ainult viimane ülesanne, kus tuleb leida ka mõistlik õige vastuse leidmise algoritm.

Igas ülesandes on esitatud rida tingimusi, mida tulemus peab rahuldama algandmete suvaliste lubatud väärtuste korral. Kui Teie programm (kõikide või mõnede algandmete korral) neid tingimusi ei rahulda, saate antud ülesande eest vähem punkte. Need vastuse paigutuse küsimused, mida tingimused ette ei kirjuta, võib lahendada Teie poolt valitud suvalisel mõistlikul viisil. Sealjuures palume mitte püüda väljundit “paremini” disainida, kui ülesande tingimused ette näevad.

Et praegune võistlus on Eestis esimene suurem jõuproov nii noortele programmeerijatele, siis võivad esimesed ülesanded korraldajate kogenematuse tõttu osutuda rasketeks. Korraldajad loodavad paari esimese vooru lahenduste põhjal leida paraja raskustaseme. Esialgu soovitame lahenduse ära saata ka siis, kui jõuate valmis teha ainult ühe ülesande või näete, et Teie lahendused ei rahulda mõnda esitatud tingimust.


1. LIITMINE

Sisestada liidetavate arv N ( 2 <= N <= 5 ) ja N naturaalarvulist liidetavat (ülimalt 5-kohalised).

Väljastada ekraanile liitmistehe nii, et

1) vastavad kümnendkohad on üksteise all,

2) liidetavate ja summa vahel on miinusmärkidest joon, mis asub samadel positsioonidel kui summa,

3) summa esimene number on ekraanirea esimesel positsioonil.

Näide: Kui algandmed on 3, 125, 897 ja 2456, siis võib väljastada

 125
 897
2456
----
3478

2. LAHUTAMINE

Sisestada naturaalarvud A ja B (kus A > B > 0 ja mõlemad on ülimalt 6-kohalised).

Väljastada ekraanile lahutamistehe A-B, täites järgmisi tingimusi:

1) vastavad kümnendkohad on üksteise all, arv A algab 2. positsioonist,

2) Arvu A nende kümnendkohtade kohal, millest laenatakse, on punkt,

3) vähendatava ja lahutatava vahel oleval real 1. positsioonil on miinusmärk,

4) arvu B ja tulemuse vahel on miinustest joon, mis asub samadel positsioonidel nagu arv A.

Näide: Kui algandmed on 54321 ja 609, siis võib väljastada

   . .
 54321
-
   609
 -----
 53712

3. KORRUTAMINE

Sisestada kaks naturaalarvu A ja B (ülimalt 4-kohalised).

Väljastada ekraanile korrutamistehe vastavalt tavalisele mitmekohaliste arvude korrutamise algoritmile, kusjuures esimene tegur korrutatakse kordamööda teise teguri ühelistega, kümnelistega jne.

1) vastavad kümnendkohad paigutada samasse positsiooni,

2) tegurite ja osakorrutiste ning osakorrutiste ja tulemuse vahele paigutada miinusmärkidest joon,

3) nulliga võrduvaid osakorrutisi mitte väljastada,

4) tulemuse esimene kümnendkoht väljastada rea esimesele positsioonile.

Näide: Kui tegurid on 126 ja 304, siis võib väljastada

  126
  304
-----
  504
378
-----
38304

4. JAGAMINE (TAANDAMINE)

Sisestada kaks naturaalarvu A ja B (A<B, ülimalt 8-kohalised).

Väljastada ekraanile miinusmärkidest murrujoont kasutades murru A/B taandamise

tulemus, kusjuures

1) murru nimetaja algab 1. positsioonist,

2) murrujoon on sama pikk kui nimetaja,

3) lugeja paikneb nimetaja suhtes keskmistel positsioonidel.

Näide: Kui arvud on 42 ja 960, siis võib väljastada

 7
---
160

Erinevalt eelmistest ülesannetest tuleb taandamise korral mõelda ka tulemuse leidmise viisile. Kui kasutada väga naiivset kõigi võimalike taandajate läbiproovimise algoritmi, võib programm suurte arvude korral töötada liiga kaua.



Palume saata kõik küsimused aadressil
Viimati muudetud: