{"id":21,"date":"2026-08-13T12:00:53","date_gmt":"2026-08-13T10:00:53","guid":{"rendered":"http:\/\/www.blue.pri.ee\/ttu\/?page_id=21"},"modified":"2026-11-06T15:58:47","modified_gmt":"2026-11-06T13:58:47","slug":"kodutoo-ii","status":"publish","type":"page","link":"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/","title":{"rendered":"Kodut\u00f6\u00f6 II"},"content":{"rendered":"<div class=\"su-tabs su-tabs-style-default su-tabs-mobile-stack\" data-active=\"1\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-tabs-nav\"><span class=\"\" data-url=\"\" data-target=\"blank\" tabindex=\"0\" role=\"button\">Kodut\u00f6\u00f6 \u00fcldn\u00f5uded<\/span><span class=\"\" data-url=\"\" data-target=\"blank\" tabindex=\"0\" role=\"button\">Kodut\u00f6\u00f6 \u00fclesande variant<\/span><span class=\"\" data-url=\"\" data-target=\"blank\" tabindex=\"0\" role=\"button\">N\u00e4idislahendus<\/span><\/div><div class=\"su-tabs-panes\"><div class=\"su-tabs-pane su-u-clearfix su-u-trim\" data-title=\"Kodut\u00f6\u00f6 \u00fcldn\u00f5uded\">\n<p>Kodut\u00f6\u00f6 2 raames tuleb sul luua tarkvaraline lahendus vastavalt \u00fclesande variandile ja kodut\u00f6\u00f6 n\u00f5uetele. Loodud lahendus tuleb dokumenteerida.<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Aruanne\" >Aruanne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Aruande_sisu\" >Aruande sisu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Nouded_sisendile\" >N\u00f5uded sisendile<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Sisendfaili_struktuur\" >Sisendfaili struktuur<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Nouded_koodimisstandardile_ja_keskkonnale\" >N\u00f5uded koodimisstandardile ja keskkonnale<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Nouded_lahendusele\" >N\u00f5uded lahendusele<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Lisaulesanne_boonuspunktide_teenimiseks\" >Lisa\u00fclesanne boonuspunktide teenimiseks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Tahtajad\" >T\u00e4htajad<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Esitamine\" >Esitamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Tulemused_ja_tagasiside\" >Tulemused ja tagasiside<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-ii\/#Kodutoo_parandamine\" >Kodut\u00f6\u00f6 parandamine<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Selle \u00fclesande raames on fookuseks p\u00f5hjalikum veaohtlike olukordade tuvastamine, anal\u00fc\u00fcs, v\u00f5imalusel lahenduste leidmine ja dokumenteerimine. Programmeerimise tehnilistest aspektidest on fookus \u00fclesande dekompositsioonil, massiivide kasutamisel ja veaohtlike olukordade lahendamisel.<\/p>\n<p data-select-like-a-boss=\"1\">\u00dclesande testimise k\u00e4igus on oluline, et programm on<\/p>\n<ol>\n<li data-select-like-a-boss=\"1\">Jooksutatav k\u00e4surealt kasutades voo suunamist vastavalt etteantud sisendile<\/li>\n<li data-select-like-a-boss=\"1\">Arusaadav ka siis, kui programm pannakse k\u00e4ima tavap\u00e4raselt, st sisestades andmeid k\u00e4sitsi klaviatuurilt vastavalt programmi poolt esitatud k\u00fcsimustele<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Aruanne\"><\/span>Aruanne<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodut\u00f6\u00f6 raames tuleb esitada p\u00f5hjalik aruanne tehtud t\u00f6\u00f6 kohta. Aruande kvaliteet on osa kodut\u00f6\u00f6 hindest.<\/p>\n<p>Aruanne peab vastama IT teaduskonna l\u00f5put\u00f6\u00f6 juhendile. Malli kasutamise kohta oleme koostanud l\u00fchijuhendi, mille leiad siit:\u00a0<a href=\"https:\/\/blue.pri.ee\/ttu\/ressursid\/aruande-vormistamise-juhend\/\"><strong>https:\/\/blue.pri.ee\/ttu\/ressursid\/aruande-vormistamise-juhend\/<\/strong><\/a><\/p>\n<p><strong>Aruanne peab olema keelekasutuselt ja pikkuselt m\u00f5istlik ja j\u00f5ukohane nii kirjutajale kui lugejale.<\/strong> V\u00e4ldi p\u00f5hjendamatult keerukat s\u00f5nakasutust (nt m\u00f5isted, mida sa ise ei oskaks selgitada) ning tegevuste uhkemaks kirjutamist, kui need tegelikult on.<\/p>\n<p>Aruande p\u00f5hjaks kasuta kodut\u00f6\u00f6 1 malli (<a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-i\/\">https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-i\/<\/a>) ning kohanda see sobivaks vastavalt k\u00e4esoleva kodut\u00f6\u00f6 n\u00f5uetele.\u00a0<strong>Aruande sisu peat\u00fckid muutuvad jooksvalt koos sinu arengu ning t\u00f6\u00f6 fookusega!<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Aruande_sisu\"><\/span>Aruande sisu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aruanne peab sisaldama j\u00e4rgnevaid komponente<\/p>\n<ul>\n<li style=\"font-weight: inherit; font-style: inherit;\">Tiitelleht<\/li>\n<li style=\"font-weight: inherit; font-style: inherit;\">Autorideklaratsioon<\/li>\n<li>L\u00fchendite ja m\u00f5istete s\u00f5nastik (vajadusel)<\/li>\n<li>Sisukord<\/li>\n<li>Jooniste ja tabelite loetelu (vajadusel)<\/li>\n<li>\u00dclesande p\u00fcstitus ja variant<\/li>\n<li style=\"font-weight: inherit; font-style: inherit;\"><span style=\"font-style: inherit;\">Lahenduse kirjeldus<\/span>\n<ul>\n<li style=\"font-weight: inherit; font-style: inherit;\"><span style=\"font-style: inherit;\">Kirjelduse teksti osa pikkuseks on\u00a0 2 &#8211; 4 A4 lehek\u00fclge, millele lisanduvad joonised. Kirjeldus peab olema arusaadavalt struktureeritud.\u00a0<\/span><\/li>\n<li style=\"font-weight: inherit; font-style: inherit;\"><span style=\"font-style: inherit;\">Mis on su programmi eesm\u00e4rk &#8211; st mida teeb?<\/span><\/li>\n<li data-select-like-a-boss=\"1\">Sisendi kirjeldus (<em>kust l\u00e4hteandmed tulevad, mis formaadis need olema peavad, mis j\u00e4rjekorras sisendeid oodatakse ning mis piirangud sisenditele on<\/em>).<\/li>\n<li style=\"font-weight: inherit; font-style: inherit;\" data-select-like-a-boss=\"1\"><span style=\"font-style: inherit;\">Programmi t\u00f6\u00f6voog (l\u00fchidalt ja \u00fcldistatuna, esita loendina)<\/span><\/li>\n<li>Programmi lahenduse algoritm UML tegevusdiagrammina. Algoritmis kajasta <strong>vaid<\/strong> andmet\u00f6\u00f6tlust ja tulemuse saavutamiseks vajalikke samme. \u00c4ra kajasta sisendi lugemist ega lisa\u00fclesannete n\u00f5uetest tulevaid tegevusi! Vaata n\u00e4idist!<\/li>\n<li><span style=\"font-style: inherit;\">Eriolukordade anal\u00fc\u00fcs <\/span><span style=\"font-style: inherit;\">(lihtsustatud riskianal\u00fc\u00fcs)<\/span>\n<ul>\n<li>Peab sisaldama probleemi IDd, kirjeldust, olekut ning v\u00f5imalusel lahendust v\u00f5i ideed kuidas v\u00f5iks lahendada.<\/li>\n<li>Meeldetuletus: K\u00f5ikide probleemide lahendamine ei pruugi olla sinu praeguses p\u00e4devuses, eesk\u00e4tt on oluline olla v\u00f5imalikest probleemidest teadlik!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Tehisaru kasutamine<\/li>\n<li>Kokkuv\u00f5te\n<ul>\n<li>Kirjuta m\u00f5ni lause oma l\u00e4henemisest \u00fclesandele ja t\u00f6\u00f6protsessi kohta<\/li>\n<li>Kirjuta m\u00f5ni lause \u00fclesandest ja selle keerukusest sinu jaoks<\/li>\n<li>Kui v\u00f5imalik, hinda \u00fclesande sooritamise ajalist mahtu<\/li>\n<li>Kas soovitad \u00fclesannet kasutada ka tulevikus? Kas ja mida muudaksid?<\/li>\n<li>T\u00e4iendavad kommentaarid, emotsioonid, m\u00f5tted<\/li>\n<\/ul>\n<\/li>\n<li>Kasutatud kirjandus (vajadusel)\n<ul>\n<li>Viitamiseks kasutatakse IEEE stiili<br \/>\nTalTechi juhend:\u00a0<strong><a href=\"https:\/\/haldus.taltech.ee\/sites\/default\/files\/2024-05\/IEEE_stiilis_viitamine_2024%20%281%29.pdf\">https:\/\/haldus.taltech.ee\/sites\/default\/files\/2024-05\/IEEE_stiilis_viitamine_2024%20%281%29.pdf<\/a><\/strong><br \/>\nAmetlik juhend:\u00a0<strong><a href=\"https:\/\/journals.ieeeauthorcenter.ieee.org\/wp-content\/uploads\/sites\/7\/IEEE_Reference_Guide.pdf\">https:\/\/journals.ieeeauthorcenter.ieee.org\/wp-content\/uploads\/sites\/7\/IEEE_Reference_Guide.pdf<\/a><\/strong><\/li>\n<li>K\u00f5ik, mis ei olnud selle \u00f5ppeaine raames kaetud, ja mida sa ei loonud iseseisvalt.<\/li>\n<li>Viidata tuleb ka s\u00f5bralt v\u00f5i kursusekaaslaselt saadud abile: <strong><a href=\"https:\/\/libraryguides.vu.edu.au\/ieeereferencing\/personalcommunication\">https:\/\/libraryguides.vu.edu.au\/ieeereferencing\/personalcommunication<\/a><\/strong><\/li>\n<li>Tehisaru kasutamine peab olema viidatud korrektselt vastavalt \u00fclikooli seatud reeglitele<\/li>\n<li>Viited allikatele peavad olema t\u00e4psed.\u00a0<em>N\u00e4iteks viitena stackoverflow.com v\u00f5i google.com ei sobi.\u00a0<\/em><\/li>\n<\/ul>\n<\/li>\n<li>Lisa: Ekraanit\u00f5mmis(ed) t\u00f6\u00f6tavast programmist\n<ul>\n<li>Ekraanit\u00f5mmisel<strong> peab<\/strong> olema n\u00e4idatud kuidas kasutad programmi kasutades voo suunamist! J\u00e4ta k\u00e4sk v\u00e4hemalt \u00fchel pildil n\u00e4htavaks.<\/li>\n<li>Ekraanit\u00f5mmised peaksid illustreerima erinevaid situatsioone millega sinu programm toime tuleb ning ka tavap\u00e4rast k\u00e4itumist.<\/li>\n<li>Ekraanit\u00f5mmised v\u00f5ivad olla esitatud t\u00f6\u00f6 lisades v\u00f5i p\u00f5imitud lahenduse kirjelduse sisse. P\u00f5imides ekraanit\u00f5mmised p\u00f5hiosa sisse v\u00f5id p\u00f5hiosa pikendada piltidele kulunud ruumi arvelt.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>M\u00e4rkus: Kui kasutad tunnis seni l\u00e4bi v\u00f5tmata v\u00f5tteid ja keelelisi konstruktsioone, pead nende t\u00f6\u00f6p\u00f5him\u00f5tte ja kasutuse eelised lahenduses selgitama aruandes, mille arvelt v\u00f5id lahenduse kirjeldust pikendada.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nouded_sisendile\"><\/span>N\u00f5uded sisendile<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Loodavat rakendust v\u00f5idakse kasutada kahte moodi.<\/p>\n<ol>\n<li>Kasutades programmi l\u00e4bi voo suunamise. See tekitab n\u00f5uded sisendi j\u00e4rjestusele programmis, l\u00e4hemalt kirjeldatud &#8220;sisendfaili struktuur&#8221; osas.<\/li>\n<li>Kasutades programmi tavap\u00e4raselt, st k\u00e4ivitades selle ja tr\u00fckkides sisendi klaviatuurilt. See tekitab vajaduse kasutajale selgete k\u00e4skluste ja tagasiside andmiseks.<\/li>\n<\/ol>\n<p>Maksimaalselt peab loodud programm t\u00f6\u00f6tama 15 andme\u00fcksusega. St 1-m\u00f5\u00f5tmelise massiivi korral on sellel maksimaalselt 15 liiget, 2-m\u00f5\u00f5tmelise massiivi puhul 15 x 15. Massiive v\u00f5ib olla mitu.<\/p>\n<p>\u00dclesandevariant sisaldab kahte tekstifaili n\u00e4itesisenditega. Need on \u00fchtlasi ka sinu esimesed kaks testitavat sisendikomplekti. Sinu programm peab lugema sisendit samas j\u00e4rjekorras nagu etteantud tekstifailides. Andmet\u00fc\u00fcbid kohalda vastavalt failides olevale n\u00e4idissisendile. Esitatavas lahenduses oodatakse, et oled koostanud ka t\u00e4iendavaid sisendfaile veaolukordade testimiseks!<\/p>\n<p>Osa sinu \u00fclesandest on anal\u00fc\u00fcsida ja lahendada situatsioone, millega su programm v\u00f5ib silmitsi seista. N\u00e4iteks pead m\u00f5tlema mida teha olukorras, kus kasutaja soovib sulle anda vaid 1 sisendi? -55 sisendit? 100 sisendit? Loodav programm peab suutma toime tulla ebasobiliku sisendiga, minimaalselt sama (oodatava) andmet\u00fc\u00fcbi piires. Veaohtlike olukordade anal\u00fc\u00fcs peab kajastama laiemalt erinevaid v\u00f5imalike sisendeid, kuid nende lahendamine programmikoodis on osa lisa\u00fclesandest.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Sisendfaili_struktuur\"><\/span>Sisendfaili struktuur<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Sisendfaili esimene arv t\u00e4histab sellele vahetult j\u00e4rgneva massiivi liikmete arvu. Maatriksi puhul m\u00e4\u00e4ravad selle m\u00f5\u00f5tmed esimesed kaks arvu. Kui programmis k\u00fcsitakse t\u00e4iendavat sisendit, paikneb see p\u00e4rast massiivi liikmeid.<\/p>\n<p>N\u00e4iteks \u00fclesandes, kus tuleb leida tudengite keskmine hinne, v\u00f5iks olla sisendfail j\u00e4rgnev: <span class=\"lang:default highlight:0 decode:true crayon-inline\">9 1 0 4 5 5 3 5 4 2<\/span><\/p>\n<p>Esimene arv 9 t\u00e4histab mitu hinnet eksisteerib. Sellele j\u00e4rgnevad 9 hinnet.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nouded_koodimisstandardile_ja_keskkonnale\"><\/span>N\u00f5uded koodimisstandardile ja keskkonnale<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Loodav programm peab olema kirjutatud C-programmeerimiskeeles. Vaikimisi eeldatakse, et programm on kirjutatud C99 standardile vastavalt. Teiste standardite (C90, C11, C17, C23) kasutamine on lubatud, kui see pakub lisandv\u00e4\u00e4rtust. P\u00f5hjendus tuleb tuua v\u00e4lja aruandes.<\/p>\n<p>Lisaks C standardteekidele tohid kasutada ka C POSIX ja GNU C teeke ja laiendusi. Teiste teekide kasutamine tuleb eelnevalt \u00f5ppej\u00f5uga kokku leppida!<\/p>\n<p>Esitatud lahendus kompileeritakse ja testitakse arvutiklassis oleva Linuxi seadistusega v\u00f5rdv\u00e4\u00e4rses keskkonnas (nt OpenSUSE SLED-15 SP5 ja GCC-12) v\u00f5i soovitusliku koduse seadistusega (Ubuntu Linux 26.04 ja GCC-15 v\u00f5i uuem). \u00dchilduvus teiste operatsioonis\u00fcsteemidega (Windows, macOS) ei ole vajalik.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nouded_lahendusele\"><\/span>N\u00f5uded lahendusele<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Programm tuleb koostada l\u00e4htuvalt seni \u00f5pitud praktikatest. Muu hulgas peavad olema t\u00e4idetud j\u00e4rgmised n\u00f5uded:<\/p>\n<ul>\n<li>Koodis puuduvad globaalmuutujad, <span class=\"lang:c highlight:0 decode:true crayon-inline \">goto<\/span>\u00a0 laused<\/li>\n<li>Programm peab lugema oma sisendi <span class=\"lang:default highlight:0 decode:true crayon-inline\">stdin<\/span>\u00a0 standardvoost. Sinu programmi testitakse nii sisendvoo suunamisega kui ka otse k\u00e4surealt k\u00e4ivitades ja tr\u00fckkides sisendit klaviatuurilt.<\/li>\n<li>Koodis puuduvad kasutamata komponendid (nt teegifailid, muutujad mida ei kasuta)<\/li>\n<li>Kood on t\u00fckeldatud funktsioonideks\n<ul>\n<li>funktsioonide koostamisel l\u00e4htu \u00f5pitud praktikatest ja koodimisstiili n\u00f5uetest<\/li>\n<li>\u00fckski funktsioon, sh main funktsioon, ei tohi sisaldada lohisevat spagett-koodi<\/li>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioon peab olema koodi k\u00f5ige esimene funktsioon, enda loodud funktsioonid peavad paiknema p\u00e4rast <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsiooni<\/li>\n<li>soovi korral v\u00f5id kasutada p\u00e4isefaili<\/li>\n<\/ul>\n<\/li>\n<li>Kood vastab esitatud koodimisstiili n\u00f5uetele<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Lisaulesanne_boonuspunktide_teenimiseks\"><\/span>Lisa\u00fclesanne boonuspunktide teenimiseks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodut\u00f6\u00f6 eest on v\u00f5imalik saada kuni 15 boonuspunkti. Boonuspunktide saamiseks peavad lisa\u00fclesande raames tehtud t\u00e4iendused olema aruandes kirjeldatud. Lahenduse eest on v\u00f5imalik ositi punkte teenida, kuid ka selleks peab lahendatu olema dokumenteeritud aruandes.<\/p>\n<p>Boonuspunktide saamiseks tuleb lisaks \u00fclesande baasn\u00f5uetele t\u00e4ita j\u00e4rgmised n\u00f5uded<\/p>\n<ul>\n<li>Rakendus peab toetama j\u00e4rgnevaid k\u00e4sureaargumente\n<ul>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">-i=file_name<\/span>\u00a0 \u00a0ja\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">&#8211;input=file_name<\/span>\u00a0&#8211; Programm loeb sisendi etteantud failist ning kuvab kohe vastuse ekraanile<\/li>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">-p=interactive<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true crayon-inline\">&#8211;prompt=interactive<\/span>\u00a0\u00a0&#8211; Programm loeb sisendi <span class=\"lang:c highlight:0 decode:true crayon-inline\">stdin<\/span>\u00a0 standardvoost. Programm peab selgelt v\u00e4ljendama mida kasutaja sisestama peab ning kuvama veateateid. Tegu on vaikeolekuga.<\/li>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">-p=disabled<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true crayon-inline\">&#8211;prompt=disabled<\/span>\u00a0 &#8211; \u00a0Programm loeb sisendi <span class=\"lang:c highlight:0 decode:true crayon-inline \">stdin<\/span>\u00a0 standardvoost. Programm ei tohi esitada kasutajale \u00fchtegi k\u00fcsimust sisendite kohta. Ekraanil kuvatakse vaid tulemused.<\/li>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline \">&#8211;help<\/span>\u00a0 &#8211; Kuvab juhised programmi kasutamiseks kasutades klassikalist abilehe struktuuri ja stiili (vt n\u00e4ited nt <span class=\"lang:c highlight:0 decode:true crayon-inline\">grep &#8211;help<\/span>\u00a0 v\u00f5i <span class=\"lang:c highlight:0 decode:true crayon-inline\">man grep<\/span>\u00a0)<\/li>\n<\/ul>\n<\/li>\n<li>Programm ei tohi katki minna kui t\u00e4isarvu asemel antakse talle kogemata n\u00e4iteks tekst.<\/li>\n<li>Aruandesse tuleb lisada nummerdatud esimese astme pealkiri \u201cLisa\u00fclesanne\u201d, milles\n<ul>\n<li>Kirjelda lisa\u00fclesande raames lisatud funktsionaalsus.<\/li>\n<li>Kirjuta kuidas l\u00e4henesid k\u00e4sureargumentide lisamisele ja kontrollile.<\/li>\n<li>Kirjuta kuidas otsustasid, mis on oluline kuvada abilehel.<\/li>\n<li>Selgita oma l\u00e4henemist sisendi kontrollimisel.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Tahtajad\"><\/span>T\u00e4htajad<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"color: #ff0000;\"><strong>Terviklik kodut\u00f6\u00f6 tuleb esitada hiljemalt 13.12.2026 23:59:59 (kohalik aeg)<\/strong><\/span><\/p>\n<p>Kodut\u00f6\u00f6 t\u00e4htaja \u00fcletamisel v\u00e4hendatakse t\u00f6\u00f6 eest saadavat l\u00f5pptulemust 1 punkti v\u00f5rra iga esitamist\u00e4htajast \u00fcle l\u00e4inud p\u00e4eva eest.<\/p>\n<p>Kui kodut\u00f6\u00f6 kohta tekib t\u00e4iendavaid k\u00fcsimusi v\u00f5i esineb kahtlusi autorluses, m\u00e4rgitakse kodut\u00f6\u00f6 tulemuseks 0 punkti kuni t\u00f6\u00f6 eduka kaitsmiseni.<\/p>\n<p>Vajadusel rakendatakse [<a style=\"cursor: pointer !important; user-select: none !important;\" href=\"https:\/\/haldus.taltech.ee\/sites\/default\/files\/2020-10\/Terviktekst_IT-teaduskonna%20\u00f5ppuri%20akad%20tavade%20rikkumise%20ja%20v\u00e4\u00e4ritu%20k\u00e4itumise%20menetlemise%20kord.pdf\">V\u00e4\u00e4ritu k\u00e4itumise menetlemise korda<\/a>].<\/p>\n<p><strong><span style=\"font-style: inherit; color: #ff0000;\">Viimane p\u00e4ev kodut\u00f6\u00f6 esitamiseks ja kaitsmiseks on m\u00e4rgitud sissejuhatavatel slaididel. P\u00e4rast antud kuup\u00e4eva kodut\u00f6id esitada ei ole v\u00f5imalik!<\/span><\/strong><\/p>\n<h3 data-select-like-a-boss=\"1\"><span class=\"ez-toc-section\" id=\"Esitamine\"><\/span>Esitamine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-select-like-a-boss=\"1\">Esitada tuleb dokumentatsioon PDF formaadis, k\u00f5ik vajalikud koodifailid programmi kompileerimiseks ning zip failina kokku pakitud testsisendid, kuhu oled lisanud ka enda loodud sisendfaile.<\/p>\n<p>Failide nimed peavad algama\u00a0<strong>K2_Perenimi_\u00fcli\u00f5pilaskood<\/strong>.<br \/>\nN\u00e4iteks:<\/p>\n<p>K2_Jalakas_112211IACB_kood.c<br \/>\nK2_Jalakas_112211IACB_aruanne.pdf<br \/>\nK2_Jalakas_112211IACB_sisendid.zip<\/p>\n<p>Kodut\u00f6\u00f6 tuleb esitada Moodle kaudu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tulemused_ja_tagasiside\"><\/span>Tulemused ja tagasiside<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>P\u00e4rast t\u00f6\u00f6 kontrollimist leiad Moodlest oma punktid ning tagasiside.\u00a0 Korralikult tehtud t\u00f6\u00f6 korral v\u00f5ib tagasiside puududa.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kodutoo_parandamine\"><\/span>Kodut\u00f6\u00f6 parandamine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodut\u00f6\u00f6 tulemust on v\u00f5imalik parandada kuni kodut\u00f6\u00f6 lukustamise kuup\u00e4evani. Arvesta, et kui esitad oma kodut\u00f6\u00f6 v\u00e4hem kui kaks n\u00e4dalat enne lukustamise kuup\u00e4evas, ei pruugi meil j\u00e4\u00e4da piisavalt aega sinu t\u00f6\u00f6 hindamiseks ja sul paranduste sisse viimiseks.<\/p>\n<p>Parandatud kodut\u00f6\u00f6d kuuluvad kaitsmisele.<\/p>\n<p>Kodut\u00f6\u00f6 parandamiseks vaata esmalt l\u00e4bi oma t\u00f6\u00f6 tagasiside. Seej\u00e4rel v\u00f5ta \u00fchendust \u00f5ppej\u00f5uga, et kokku leppida parandamise protsessis.<\/p>\n<p>NB! Kui t\u00f6\u00f6 parandamise k\u00e4igus osutub vajalikuks enama kui poole t\u00f6\u00f6 muutmine, loetakse seda uue t\u00f6\u00f6 esitamiseks, millelt v\u00f5idakse arvestada maha hilinemine vastavalt paranduse esitamise kuup\u00e4evale.<\/p>\n<h3><span style=\"font-size: 16px; font-weight: 400;\"><\/div>\n<div class=\"su-tabs-pane su-u-clearfix su-u-trim\" data-title=\"Kodut\u00f6\u00f6 \u00fclesande variant\"><\/span><\/h3>\n<p data-select-like-a-boss=\"1\">\n<!-- iframe plugin v.6.0 wordpress.org\/plugins\/iframe\/ -->\n<iframe loading=\"lazy\" src=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0583\/kodutoo\/kodutoo2.html\" width=\"100%\" height=\"1100\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n\n<\/div>\n<div class=\"su-tabs-pane su-u-clearfix su-u-trim\" data-title=\"N\u00e4idislahendus\">\n<p>NB! Tegu on vaid osalise n\u00e4itega demonstreerimaks \u00fcldist kodut\u00f6\u00f6 struktuuri, sisestust, testimist, algoritmi ja koodimisstiili. Konkreetsete n\u00f5uete kohta loe n\u00f5uete alt!<\/p>\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Koodin\u00e4idise vaatamiseks kliki siin<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n<p>Programmikoodi n\u00e4ide ei vasta t\u00e4ielikult \u00fclesande p\u00f5hin\u00f5uetele. N\u00e4iteks on sisendi kontroll liialt leebe.<\/p>\n<pre class=\"font-size:12 line-height:16 left-set:true left-margin:0 right-margin:0 nums-toggle:false lang:c decode:true \">\/**\r\n * Author:          Risto Heinsar\r\n * Created:         23.10.2015\r\n * Modified:        06.11.2026\r\n * Description:     This snippet of code helps Nick Fury keep track of his\r\n *                  minions a little better.\r\n *\/\r\n\r\n#include &lt;stdio.h&gt;\r\n\r\n\/\/ Array limits\r\n#define MIN_AVENGERS 1\r\n#define MAX_AVENGERS 10\r\n#define MAX_NAME_LEN 16\r\n\r\n\/\/ Function prototypes\r\nint GetAvengerCount(int minVal, int maxVal);\r\nvoid GetMissionStats(char name[MAX_AVENGERS][MAX_NAME_LEN], int disposeCount[],\r\n                      int cnt);\r\ndouble CalcAvgBaddieDisposed(int disposeCount[], int cnt);\r\nvoid DisplaySlackers(char name[MAX_AVENGERS][MAX_NAME_LEN], int disposeCount[],\r\n                     int avengerCnt, double avgBaddiesDisposed);\r\n\r\nint main(void)\r\n{\r\n    char avengers[MAX_AVENGERS][MAX_NAME_LEN];\r\n    int disposeCount[MAX_AVENGERS];\r\n\r\n    \/\/ Get number of avengers participating in the mission\r\n    int avengerCount = GetAvengerCount(MIN_AVENGERS, MAX_AVENGERS);\r\n\r\n    \/\/ Collect mission statistics\r\n    GetMissionStats(avengers, disposeCount, avengerCount);\r\n \r\n    \/\/ Data processing and output\r\n    double avgBaddiesDisposed = CalcAvgBaddieDisposed(disposeCount, \r\n                                                      avengerCount);\r\n    DisplaySlackers(avengers, disposeCount, avengerCount, avgBaddiesDisposed);\r\n\r\n    return 0;\r\n}\r\n\r\n\/**\r\n * Description: Prompts for an integer within the allowed range. Only returns\r\n *              once user input is within the permitted range, otherwise prints \r\n *              an error and reprompts.\r\n * \r\n * Parameters:  minVal - lower limit for allowed range (inclusive)\r\n *              maxVal - upper limit for allowed range (inclusive)\r\n * \r\n * Return:      Integer in range of minVal and maxVal\r\n *\/\r\nint GetAvengerCount(int minVal, int maxVal)\r\n{\r\n    int count;\r\n    \r\n    do\r\n    {\r\n        printf(\"Enter avenger count between %d and %d\\n\", minVal, maxVal);\r\n        scanf(\"%d\", &amp;count);\r\n        \r\n        \/\/ Print an error for invalid input\r\n        if (count &lt; minVal || count &gt; maxVal)\r\n            puts(\"I'm sorry, I can't handle that :(\");\r\n    }\r\n    while (count &lt; minVal || count &gt; maxVal);\r\n    \r\n    return count;\r\n}\r\n\r\n\r\n\/**\r\n * Description: Populates the mission stats - the names of avengers who were\r\n *              on the mission and how many baddies they disposed of. Assumes\r\n *              both arrays use the same index for corresponding values.\r\n * \r\n * Parameters:  name - Array of strings for avenger names\r\n *              disposeCount - number of baddies disposed of by each avenger\r\n *              cnt - number of avengers on the mission\r\n * \r\n * Return:      none\r\n *\/\r\nvoid GetMissionStats(char name[MAX_AVENGERS][MAX_NAME_LEN], int disposeCount[],\r\n                      int cnt)\r\n{\r\n    for (int i = 0; i &lt; cnt; i++)\r\n    {\r\n        printf(\"Enter the name and disposed of count for avenger %d: \", i + 1);\r\n        scanf(\"%s %d\", name[i], &amp;disposeCount[i]);\r\n    }\r\n}\r\n\r\n \r\n\/**\r\n * Description: Finds the average number of baddies disposed on a mission\r\n *              per avenger.\r\n * \r\n * Parameters:  disposeCounts - number of baddies disposed of by each avenger\r\n *              cnt - number of avengers on the mission\r\n * \r\n * Return:      number of baddies disposed of on average\r\n *\/\r\ndouble CalcAvgBaddieDisposed(int disposeCount[], int cnt)\r\n{\r\n    int sum = 0;\r\n    \r\n    \/\/ Find the total baddies disposed of\r\n    for (int i = 0; i &lt; cnt; i++)\r\n    {\r\n        sum += disposeCount[i];\r\n    }\r\n    \r\n    \/\/ Returns the average\r\n    return ((double)sum \/ (double)cnt);\r\n}\r\n\r\n\/**\r\n * Description: Prints the mission statistics, finds the avengers who were\r\n *              goofing off and reports them to Fury.\r\n * \r\n * Parameters:  name - 2D array for avenger names\r\n *              disposeCount - number of baddies disposed of by each avenger\r\n *              avengerCnt - number of avengers on the mission\r\n *              avgBaddiesDisposed - average number of baddies disposed of by \r\n *                                   one avenger during the mission\r\n * \r\n * Return:      -\r\n *\/\r\nvoid DisplaySlackers(char name[MAX_AVENGERS][MAX_NAME_LEN], int disposeCount[],\r\n                     int avengerCnt, double avgBaddiesDisposed)\r\n{\r\n    printf(\"The total number of avengers on mission was %d\\n\", avengerCnt);\r\n    printf(\"Average baddies disposed of was: %lg\\n\\n\", avgBaddiesDisposed);\r\n    \r\n    printf(\"The following avengers were slacking off:\\n\");\r\n    \r\n    \/\/ Go through the list of avengers\r\n    for (int i = 0; i &lt; avengerCnt; i++)\r\n    {\r\n        \/\/ Print if the avenger disposed of fewer baddies than the average\r\n        if (disposeCount[i] &lt; avgBaddiesDisposed)\r\n        {\r\n            printf(\"%15s %3d\\n\", name[i], disposeCount[i]);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div><\/div>\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Algoritmi n\u00e4idise vaatamiseks kliki siin<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n<p>Algoritmis oodatakse vaid andmet\u00f6\u00f6tlust ja tulemuste saavutamiseks olulist osa. Sisendi lugemist ega valideerimist ei ole vaja kajastada, samuti pole vaja algoritmi lisada lisa\u00fclesannete osa (nt k\u00e4sureaargumente). N\u00e4idis on inglise keeles, kuid lubatud on nii eesti kui ingliskeelsed lahendused.<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/11\/avengers_en.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10899\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/11\/avengers_en.png\" alt=\"\" width=\"994\" height=\"754\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/11\/avengers_en.png 994w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/11\/avengers_en-300x228.png 300w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/11\/avengers_en-768x583.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/a><\/p>\n<\/div><\/div>\n<h5>Testimise n\u00e4idised<\/h5>\n<p>Testimiseks kasutan mitut erinevat andmefaili katmaks erinevaid olukordi, millega rakendus on v\u00f5imeline toime tulema<\/p>\n<h5>Test 1: Ootusp\u00e4rane sisend voo suunamisega<\/h5>\n<p>Testsisend<\/p>\n<pre class=\"toolbar:2 lang:c highlight:0 decode:true\" title=\"HW2_Risto_Heinsar_012345ABCD_test1.txt\">4\r\nHulk 19\r\nThor 4\r\nCpt.America 12\r\nHawkeye 6<\/pre>\n<p>Testimisprotsess v\u00e4ljundiga<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:c highlight:0 decode:true\">risto@risto-wk-tux:~\/git\/IAX0583\/HW2$ .\/HW2_Heinsar_112233IASB &lt; tests\/test_1_valid_inp \r\nEnter avenger count between 1 and 10 \r\nEnter the name and disposed of count for avenger 1:\r\nEnter the name and disposed of count for avenger 2:\r\nEnter the name and disposed of count for avenger 3:\r\nEnter the name and disposed of count for avenger 4:\r\nTotal number of avengers in mission was 4\r\nAverage baddies disposed of was: 10.25\r\n\r\nThe following avengers were slacking off:\r\n           Thor   4\r\n        Hawkeye   6\r\n<\/pre>\n<h5>Test 2: V\u00e4ljaspool lubatud vahemikku voo suunamisega<\/h5>\n<p>Testsisend<\/p>\n<pre class=\"toolbar:2 lang:c highlight:0 decode:true\" title=\"HW2_Risto_Heinsar_012345ABCD_test2.txt\">19\r\n0\r\n-5\r\n5\r\nFalcon 2\r\nHulk 24\r\nThor 3\r\nCpt.America 5\r\nHawkeye 21\r\n<\/pre>\n<p>Testimisprotsess v\u00e4ljundiga<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:c highlight:0 decode:true\">risto@risto-wk-tux:~\/git\/IAX0583\/HW2$ .\/HW2_Heinsar_112233IASB &lt; tests\/test_2_err_range\r\nEnter avenger count between 1 and 10 \r\nI'm sorry, I can't handle that :(\r\nEnter avenger count between 1 and 10 \r\nI'm sorry, I can't handle that :(\r\nEnter avenger count between 1 and 10 \r\nI'm sorry, I can't handle that :(\r\nEnter avenger count between 1 and 10 \r\nEnter the name and disposed of count for avenger 1:\r\nEnter the name and disposed of count for avenger 2:\r\nEnter the name and disposed of count for avenger 3:\r\nEnter the name and disposed of count for avenger 4:\r\nEnter the name and disposed of count for avenger 5:\r\nTotal number of avengers in mission was 5\r\nAverage baddies disposed of was: 11\r\n\r\nThe following avengers were slacking off:\r\n         Falcon   2\r\n           Thor   3\r\n    Cpt.America   5\r\n<\/pre>\n<h5>Test 3: Klaviatuurilt sisend<\/h5>\n<p>Sisendit eraldi faili kujul ei ole, sisestus toimub klaviatuurilt. Programmi v\u00e4ljund peab olema kasutajale arusaadav.<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:c highlight:0 decode:true \">risto@risto-wk-tux:~\/git\/IAX0583\/HW2$ .\/HW2_Heinsar_112233IASB\r\nEnter avenger count between 1 and 10 \r\n3\r\nEnter the name and disposed of count for avenger 1:\r\nHulk 15\r\nEnter the name and disposed of count for avenger 2:\r\nThor 30\r\nEnter the name and disposed of count for avenger 3:\r\nFalcon 5\r\nTotal number of avengers in mission was 3\r\nAverage baddies disposed of was: 16.6667\r\n\r\nThe following avengers were slacking off:\r\n           Hulk  15\r\n         Falcon   5\r\n\r\n<\/pre>\n<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":12,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"page-templates\/code-width-wide.php","meta":{"footnotes":""},"class_list":["post-21","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/21","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/types\/page"}],"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=21"}],"version-history":[{"count":38,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/21\/revisions"}],"predecessor-version":[{"id":11833,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/21\/revisions\/11833"}],"up":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/12"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}