{"id":6267,"date":"2021-09-22T17:10:41","date_gmt":"2021-09-22T15:10:41","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?p=6267"},"modified":"2023-10-03T22:26:13","modified_gmt":"2023-10-03T20:26:13","slug":"kodutoo-vanuselise-jaotuse-looja","status":"publish","type":"post","link":"https:\/\/blue.pri.ee\/ttu\/kodutoo\/kodutoo-vanuselise-jaotuse-looja\/","title":{"rendered":"Kodut\u00f6\u00f6: vanuselise jaotuse looja"},"content":{"rendered":"<p>\u00dclesandeks on luua programm, mis suudab anal\u00fc\u00fcsida \u00fcrituse k\u00fclastajate vanuselist kuuluvust. Sisendiks tuleb teadmata arv k\u00fclaliste vanuseid, kuniks programmi kasutaja sisestab nulli. Sellega katkestatakse lugemine ja v\u00e4ljastatakse statistika.<\/p>\n<h3><strong>Grupeerimise n\u00f5uded:<\/strong><\/h3>\n<ul>\n<li>K\u00f5ik alla 18 aastased grupeeritakse kui noored<\/li>\n<li>\u00dcle 18 aastaste kohta luuakse j\u00e4rjest 9 vanusegruppi, sammuga 5 eluaastat (nt 18 &#8211; 22, 23 &#8211; 27 jne)<\/li>\n<li>K\u00f5ik, kelle vanus on suurem kui varasematesse gruppidesse mahtus, lahterda vanurite alla.<\/li>\n<\/ul>\n<h3>Andmestruktuur<\/h3>\n<p>Loendurid paiknevad massiivina, mille pikkus on m\u00e4\u00e4ratud makroga <span class=\"lang:default decode:true crayon-inline \">GROUPS<\/span>\u00a0. Iga pesa massiivis on eraldi loendur vastavale vanusegrupile.<\/p>\n<ul>\n<li>Indeksiga <span class=\"lang:default decode:true crayon-inline \">GROUPS &#8211; 1<\/span>\u00a0 hoitakse eakate loendurit<\/li>\n<li>Indeksitega <span class=\"lang:default decode:true crayon-inline \">GROUPS &#8211; 2<\/span>\u00a0 hoitakse noorte loendurit<\/li>\n<li>Indeksid 0 \u00a0&#8230; <span class=\"lang:default decode:true crayon-inline \">GROUPS &#8211; 3<\/span>\u00a0 on jaotatud \u00fchtlaselt vanusegruppidele. N\u00e4iteks indeks 0 on vanusevahemik 18 &#8211; 22; indeks 1 on vahemik 23 &#8211; 27 jne.<\/li>\n<\/ul>\n<h3><strong>Programmi n\u00f5uded:<\/strong><\/h3>\n<ul>\n<li>Grupeerimise v\u00e4\u00e4rtused peavad olema kergesti seadistatavad makrote abil\n<ul>\n<li>Gruppide arv<\/li>\n<li>Grupi samm<\/li>\n<li>Noorimate grupi \u00fclemine piir<\/li>\n<\/ul>\n<\/li>\n<li>\u00dclej\u00e4\u00e4nud programm peab olema v\u00f5imeline vaid makrote\u00a0 v\u00e4\u00e4rtuste muutmise peale kohanduma uute vahemikega.<\/li>\n<\/ul>\n<h3>N\u00f5utud funktsioonid<\/h3>\n<p>Selle \u00fclesande lahenduse raames peaksid looma kolm funktsiooni<\/p>\n<ul>\n<li>Kasutaja sisendi valideerimiseks &#8211; kas see oli lubatud vahemikus<\/li>\n<li>Isiku vanusegrupi indeksi leidmiseks. Grupi indeks tuleb tagastada funktsiooni poolt ja salvestada\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">idx<\/span>\u00a0 muutujasse.<\/li>\n<li>Tulemuste v\u00e4ljastamiseks.<\/li>\n<\/ul>\n<p>V\u00f5id luua ka neljanda funktsiooni, et programm struktuuri veelgi paremaks muutuja. Selleks sobiks algkoodis main funktsioonis oleva l\u00f5pmatu ts\u00fckli viimine eraldi funktsiooni.<\/p>\n<h3>Programmi struktuur<\/h3>\n<p>Oleme andnud sulle ette programmi \u00fcldise struktuuri koos vajalike makrotega. Peaksid neid kasutama, et programm<\/p>\n<pre class=\"toolbar:1 lang:c decode:true\">#include &lt;stdio.h&gt;\r\n\r\n\/* Number of age groups in total *\/ \r\n#define GROUPS 11\r\n\/* Array position for minors group *\/\r\n#define GROUP_MINOR (GROUPS - 2)\r\n\/* Array position for elders group *\/\r\n#define GROUP_ELDER (GROUPS - 1)\r\n\/* Group size*\/\r\n#define GROUP_STEP 5\r\n\/* Upper bound for minors *\/\r\n#define MINOR_UPPER_BOUND 17\r\n\/* Calculates lower bound for elders *\/\r\n#define ELDER_LOWER_BOUND (MINOR_UPPER_BOUND + (GROUP_STEP * (GROUPS - 2)))\r\n\r\n\r\nint main(void)\r\n{\r\n    int ageGroups[GROUPS] = {0};\r\n    int idx;\r\n    \r\n    \/* Infinite loop for input*\/\r\n    while (1)  \r\n    {\r\n        \/* Grab user input (call your function!) *\/\r\n        \r\n\r\n        \/* Check for break condition (age 0)*\/\r\n\r\n        \r\n        \/* Determine the index (call your function!) *\/\r\n        \/* idx = YourFunctionName()*\/\r\n        \r\n        \r\n        \/* Add to the age group counter *\/\r\n        ageGroups[idx]++;\r\n    }\r\n\r\n    \/* Pint the results (Call your function!) *\/\r\n        \r\n    return 0;\r\n}\r\n<\/pre>\n<h3>Algoritm<\/h3>\n<p>Oleme ka kirjeldanud \u00e4ra suurema osa algoritmist, mis sul realiseerida tuleb. M\u00f5ned arvutused oleme sulle ka siiski j\u00e4tnud v\u00e4lja m\u00f5elda &#8211; n\u00e4iteks kuidas leida vanusevahemike otspunktid v\u00e4ljundis ning\u00a0 ka veidi massiivi indekseerimist.<a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2021\/09\/nd5_kodu_vanuselise_jaotamise_algo_et.png.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8931 size-full\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2021\/09\/nd5_kodu_vanuselise_jaotamise_algo_et.png.png\" alt=\"\" width=\"1434\" height=\"1075\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2021\/09\/nd5_kodu_vanuselise_jaotamise_algo_et.png.png 1434w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2021\/09\/nd5_kodu_vanuselise_jaotamise_algo_et.png-300x225.png 300w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2021\/09\/nd5_kodu_vanuselise_jaotamise_algo_et.png-1024x768.png 1024w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2021\/09\/nd5_kodu_vanuselise_jaotamise_algo_et.png-768x576.png 768w\" sizes=\"auto, (max-width: 1434px) 100vw, 1434px\" \/><\/a><\/p>\n<h3>N\u00e4idis<\/h3>\n<p>Siin on n\u00e4ha programmi \u00fcldine k\u00e4itumine. N\u00e4ha on ka silumise jaoks tehtud lisav\u00e4ljatr\u00fckk mis algab <span class=\"lang:default highlight:0 decode:true crayon-inline \">DEBUG<\/span>\u00a0 tr\u00fckkimisega &#8211; see on kasulik enesekontrolliks mis massiivi indeks l\u00f5puks v\u00e4lja arvutati &#8211; st mis loendurit l\u00f5puks ikkagi suurendati.\u00a0 Valmisprogrammis seda olema ei pea, kuid arenduse juures tasub kindlasti v\u00e4lja tr\u00fckkida erinevaid v\u00e4\u00e4rtusi enesekontrolliks!<\/p>\n<p>NB! Kui testid oma rakendust, proovi muuta makrosid <span class=\"lang:c highlight:0 decode:true  crayon-inline \">GROUPS<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true  crayon-inline \">GROUP_STEP<\/span>\u00a0 ning veendu, et kogu programm kohandub muudatustele!<\/p>\n<pre class=\"theme:cisco-router toolbar:1 nums:false lang:default highlight:0 decode:true \" title=\"Sample: Age classifier test\">This program categorizes participants of the event into age brackets!\r\nTo stop entry and show statistics, enter 0 or a negative number at any point!\r\n\r\nEnter participants age: 1\r\nDEBUG: ind = 9\r\nEnter participants age: 15\r\nDEBUG: ind = 9\r\nEnter participants age: 17\r\nDEBUG: ind = 9\r\nEnter participants age: 18\r\nDEBUG: ind = 0\r\nEnter participants age: 22\r\nDEBUG: ind = 0\r\nEnter participants age: 23\r\nDEBUG: ind = 1\r\nEnter participants age: 45\r\nDEBUG: ind = 5\r\nEnter participants age: 62\r\nDEBUG: ind = 8\r\nEnter participants age: 63\r\nDEBUG: ind = 10\r\nEnter participants age: 99\r\nDEBUG: ind = 10\r\nEnter participants age: 0\r\n\r\nMinors: 3\r\nAges 18 - 22: 2\r\nAges 23 - 27: 1\r\nAges 28 - 32: 0\r\nAges 33 - 37: 0\r\nAges 38 - 42: 0\r\nAges 43 - 47: 1\r\nAges 48 - 52: 0\r\nAges 53 - 57: 0\r\nAges 58 - 62: 1\r\nElters: 2<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00dclesandeks on luua programm, mis suudab anal\u00fc\u00fcsida \u00fcrituse k\u00fclastajate vanuselist kuuluvust. Sisendiks tuleb teadmata arv k\u00fclaliste vanuseid, kuniks programmi kasutaja sisestab nulli. Sellega katkestatakse lugemine ja v\u00e4ljastatakse statistika. Grupeerimise n\u00f5uded: K\u00f5ik alla 18 aastased grupeeritakse kui noored \u00dcle 18 aastaste kohta luuakse j\u00e4rjest 9 vanusegruppi, sammuga 5 eluaastat (nt 18 &#8211; 22, 23 &#8211; 27 &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/kodutoo\/kodutoo-vanuselise-jaotuse-looja\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Kodut\u00f6\u00f6: vanuselise jaotuse looja<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92],"tags":[],"class_list":["post-6267","post","type-post","status-publish","format-standard","hentry","category-kodutoo"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/6267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/comments?post=6267"}],"version-history":[{"count":4,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/6267\/revisions"}],"predecessor-version":[{"id":8963,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/6267\/revisions\/8963"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=6267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/categories?post=6267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/tags?post=6267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}