Rubriigiarhiiv: kodutoo

Kodutöö: vanuselise jaotuse looja

Ülesandeks on luua programm, mis suudab analüüsida ürituse külastajate vanuselist kuuluvust. Sisendiks tuleb teadmata arv külaliste vanuseid, kuniks programmi kasutaja sisestab nulli. Sellega katkestatakse lugemine ja väljastatakse statistika.

Grupeerimise nõuded:

  • Kõik alla 18 aastased grupeeritakse kui noored
  • Üle 18 aastaste kohta luuakse järjest 9 vanusegruppi, sammuga 5 eluaastat (nt 18 – 22, 23 – 27 jne)
  • Kõik, kelle vanus on suurem kui varasematesse gruppidesse mahtus, lahterda vanurite alla.

Andmestruktuur

Loendurid paiknevad massiivina, mille pikkus on määratud makroga GROUPS . Iga pesa massiivis on eraldi loendur vastavale vanusegrupile.

  • Indeksiga GROUPS - 1  hoitakse eakate loendurit
  • Indeksitega GROUPS - 2  hoitakse noorte loendurit
  • Indeksid 0  … GROUPS - 3  on jaotatud ühtlaselt vanusegruppidele. Näiteks indeks 0 on vanusevahemik 18 – 22; indeks 1 on vahemik 23 – 27 jne.

Programmi nõuded:

  • Grupeerimise väärtused peavad olema kergesti seadistatavad makrote abil
    • Gruppide arv
    • Grupi samm
    • Noorimate grupi ülemine piir
  • Ülejäänud programm peab olema võimeline vaid makrote  väärtuste muutmise peale kohanduma uute vahemikega.

Nõutud funktsioonid

Selle ülesande lahenduse raames peaksid looma kolm funktsiooni

  • Kasutaja sisendi valideerimiseks – kas see oli lubatud vahemikus
  • Isiku vanusegrupi indeksi leidmiseks. Grupi indeks tuleb tagastada funktsiooni poolt ja salvestada  idx  muutujasse.
  • Tulemuste väljastamiseks.

Võid luua ka neljanda funktsiooni, et programm struktuuri veelgi paremaks muutuja. Selleks sobiks algkoodis main funktsioonis oleva lõpmatu tsükli viimine eraldi funktsiooni.

Programmi struktuur

Oleme andnud sulle ette programmi üldise struktuuri koos vajalike makrotega. Peaksid neid kasutama, et programm

Algoritm

Oleme ka kirjeldanud ära suurema osa algoritmist, mis sul realiseerida tuleb. Mõned arvutused oleme sulle ka siiski jätnud välja mõelda – näiteks kuidas leida vanusevahemike otspunktid väljundis ning  ka veidi massiivi indekseerimist.

Näidis

Siin on näha programmi üldine käitumine. Näha on ka silumise jaoks tehtud lisaväljatrükk mis algab DEBUG  trükkimisega – see on kasulik enesekontrolliks mis massiivi indeks lõpuks välja arvutati – st mis loendurit lõpuks ikkagi suurendati.  Valmisprogrammis seda olema ei pea, kuid arenduse juures tasub kindlasti välja trükkida erinevaid väärtusi enesekontrolliks!

NB! Kui testid oma rakendust, proovi muuta makrosid GROUPS  ja GROUP_STEP  ning veendu, et kogu programm kohandub muudatustele!