{"id":6397,"date":"2021-10-27T14:51:18","date_gmt":"2021-10-27T12:51:18","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?p=6397"},"modified":"2026-06-22T11:42:34","modified_gmt":"2026-06-22T09:42:34","slug":"10-labor-menuuprogramm","status":"publish","type":"post","link":"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/","title":{"rendered":"PR1ET10: Men\u00fc\u00fc-programm"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Teooriat_ja_meeldetuletusi\" >Teooriat ja meeldetuletusi<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Tahemark_sone_ja_valjastusfunktsioonid\" >T\u00e4hem\u00e4rk, s\u00f5ne ja v\u00e4ljastusfunktsioonid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Massiivi_edastamine_funktsiooni\" >Massiivi edastamine funktsiooni<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Kahe_arvu_omavahel_vahetamine_massiivis\" >Kahe arvu omavahel vahetamine massiivis<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Massiivide_algvaartustamine_nulliks\" >Massiivide algv\u00e4\u00e4rtustamine nulliks<\/a><\/li><\/ul><\/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\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Esitamisele_kuuluvad_ulesanded\" >Esitamisele kuuluvad \u00fclesanded<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Tunnitoo_naidisprogramm\" >Tunnit\u00f6\u00f6 n\u00e4idisprogramm<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Kirjeldus\" >Kirjeldus<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Uldised_nouded\" >\u00dcldised n\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Tunnitoo_osa_1_W10-1_Maatriksi_genereerimine_ja_kuvamine\" >Tunnit\u00f6\u00f6 osa 1 [W10-1]: Maatriksi genereerimine ja kuvamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Tunnitoo_osa_2_W10-2_Ridade_ja_veergude_vahetamine\" >Tunnit\u00f6\u00f6 osa 2 [W10-2]: Ridade ja veergude vahetamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Tuupilised_vead\" >T\u00fc\u00fcpilised vead<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Lisaulesanne_1_W10-3_Kustutamine\" >Lisa\u00fclesanne 1 [W10-3]: Kustutamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Lisaulesanne_2_lisamine\" >Lisa\u00fclesanne 2: lisamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Lisaulesanne_3_W10-5_Transponeerimine\" >Lisa\u00fclesanne 3 [W10-5]: Transponeerimine<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Parast_seda_tundi_peaksid\" >P\u00e4rast seda tundi peaksid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/#Taiendav_materjal\" >T\u00e4iendav materjal<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Teooriat_ja_meeldetuletusi\"><\/span>Teooriat ja meeldetuletusi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"Tahemark_sone_ja_valjastusfunktsioonid\"><\/span>T\u00e4hem\u00e4rk, s\u00f5ne ja v\u00e4ljastusfunktsioonid<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Kuigi s\u00f5nede juurde tuleme alles m\u00f5ne n\u00e4dala p\u00e4rast, siis m\u00f5ne omadusega teeme juba t\u00e4na tutvust.<\/p>\n<p><strong>S\u00f5ne<\/strong> (<em>string<\/em>) t\u00e4hendab j\u00e4rjestatud t\u00e4hem\u00e4rkide jada. St selleks v\u00f5ib olla arusaadav s\u00f5na v\u00f5i lause, kuid v\u00f5ib olla ka arusaamatu erinevate s\u00fcmbolite jada. S\u00f5ned on alati <strong>jutum\u00e4rkide<\/strong> vahel.<\/p>\n<p>N\u00e4ited:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8220;a&#8221;<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8220;Hello!&#8221;<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8220;I do wish we could chat longer, but I&#8217;m having an old friend for dinner.&#8221;<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8220;lFRD=)m+0FDj2&#8221;<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u00dcksiku t\u00e4hem\u00e4rgi kirjutame <strong>\u00fclakomade<\/strong> vahel. S\u00f5ne koosneb sellistest t\u00e4hem\u00e4rkidest. NB! Kaldkriipsuga hakkavad eris\u00fcmbolid (<em>escape sequence<\/em>) ja neid loetakse samuti \u00fcheks t\u00e4hem\u00e4rgiks kuna neid kodeeritakse \u00fche t\u00e4hem\u00e4rgina (nt <span class=\"lang:default highlight:0 decode:true crayon-inline\">\\n<\/span>\u00a0 on \u00fcks t\u00e4hem\u00e4rk arvuti m\u00e4lus kuna v\u00f5tab vaid \u00fche baidi).<\/p>\n<p>N\u00e4ited:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8216;a&#8217;<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8216;y&#8217;<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8216;\\n&#8217;<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">&#8216;\\t&#8217;<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>NB! Pane t\u00e4hele, et <span class=\"lang:c highlight:0 decode:true crayon-inline \">&#8220;a&#8221;<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true crayon-inline \">&#8216;a&#8217;<\/span>\u00a0 on erinevad. <strong>\u00dcks on s\u00f5ne, teine on t\u00e4hem\u00e4rk<\/strong>.<\/p>\n<p>Funktsioonid, mida saame kasutada teksti v\u00e4ljastamiseks<\/p>\n<ul>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">printf()<\/span>\u00a0 ehk <em>print formatted<\/em>. Tegu on k\u00f5ige keerukama funktsiooniga seni\u00f5pitutest, mille abil saame tr\u00fckkida kujundatud teksti ja v\u00e4ljastada ka k\u00f5iksugu muutujate sisu. Reavahetus k\u00e4ib k\u00e4sitsi!<br \/>\nN\u00e4iteks: <span class=\"lang:default decode:true crayon-inline\">printf(&#8220;Hello, %s!\\n&#8221;, name);<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">puts()<\/span>\u00a0 ehk <em>put string<\/em>. Tegu on lihtsa funktsiooniga, mis on m\u00f5eldud \u00fche tekstil\u00f5igu kuvamiseks. See ei toeta keerukaid formaate ega muutujatest teksti v\u00e4ljastamist. Reavahetus lisatakse automaatselt.<br \/>\nN\u00e4iteks: <span class=\"lang:default decode:true crayon-inline\">puts(&#8220;Hello, user!&#8221;);<\/span><\/li>\n<li><span class=\"lang:default highlight:0 decode:true crayon-inline\">putchar()<\/span>\u00a0 ehk <em>put character<\/em>. See on k\u00f5ige lihtsam funktsioon kolmest. Selle abil saab v\u00e4ljastada vaid \u00fche t\u00e4hem\u00e4rgi. Seda on mugav kasutada nt reavahetuse tr\u00fckkimiseks.<br \/>\nN\u00e4iteks: <span class=\"lang:default decode:true crayon-inline\">putchar(&#8216;\\n&#8217;);<\/span><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Massiivi_edastamine_funktsiooni\"><\/span>Massiivi edastamine funktsiooni<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Massiive funktsioonidese edastades andsime edasi viite originaalile &#8211; st me saame edastatud massiivi muuta ilma tagastamata ja olenemata kohast.<\/p>\n<p>Reeglina tuleb alati massiiviga koos edastada selle k\u00f5igi m\u00f5\u00f5tmete suurused. P\u00e4rast funktsiooni edastamist ei ole v\u00f5imalik massiivi m\u00f5\u00f5tmeid arvutuslikult leida! Erandiks on s\u00f5ned (<em>string<\/em>), millest r\u00e4\u00e4gime tulevikus.<\/p>\n<p>M\u00f5ned erip\u00e4rad edastamisel<\/p>\n<ul>\n<li>Kui soovid edastada <strong>tervet massiivi<\/strong>, olenemata selle m\u00f5\u00f5tmete arvust, kirjutame v\u00e4ljakutsesse vaid\u00a0 massiivi nime <span class=\"lang:default decode:true crayon-inline\">Func(numbers);<\/span><\/li>\n<li>Kui soovid 1-m\u00f5\u00f5tmelist massiivist <span class=\"lang:default decode:true crayon-inline\">int numbers[N];<\/span>\u00a0 edastada vaid <strong>\u00fche v\u00e4\u00e4rtuse<\/strong>, t\u00e4psustame selle indeksi <span class=\"lang:default decode:true crayon-inline\">Func(numbers[2]);<\/span> .\u00a0Funktsioonis k\u00e4sitle seda \u00fchte arvu\u00a0 <span class=\"lang:default decode:true crayon-inline\">Func(int val);<\/span><\/li>\n<li>Kui soovid 2-m\u00f5\u00f5tmelisest massiivist (<span class=\"lang:default decode:true crayon-inline\">int numbers[N][M];<\/span>\u00a0 edastada <strong>\u00fche rea <\/strong>(tehniliselt kirjeldatuna vastava rea alguse asukoha m\u00e4lus), t\u00e4psustame selle indeksi ja pikkuse <span class=\"lang:default decode:true crayon-inline\">Func(numbers[2], M);<\/span> . Funktsioonis k\u00e4sitle seda kui 1-m\u00f5\u00f5tmelist massiivi\u00a0 <span class=\"lang:default decode:true crayon-inline\">Func(int numbs[], int n);<\/span><\/li>\n<li>Kui soovid 2-m\u00f5\u00f5tmelisest massiivist <span class=\"lang:default decode:true crayon-inline\">int numbers[N][M];<\/span>\u00a0 edastada <strong>vaid \u00fche v\u00e4\u00e4rtuse<\/strong>, t\u00e4psustame funktsiooni v\u00e4ljakutses m\u00f5lemad indeksid <span class=\"lang:default decode:true crayon-inline\">Func(numbers[2][1]);<\/span><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Kahe_arvu_omavahel_vahetamine_massiivis\"><\/span>Kahe arvu omavahel vahetamine massiivis<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Vahetamaks kahte arvu sobib lahenduseks sorteerimise tunnist \u00f5pitud vahetamise idee kasutades abimuutujat<\/p>\n<pre class=\"toolbar:2 lang:default decode:true\">int temp = value[idx];\r\nvalue[idx] = value[idx + 1];\r\nvalue[idx + 1] = temp;<\/pre>\n<p>M\u00e4rkus: isegi kui soovid vahetada kahe rea v\u00f5i veeru v\u00e4\u00e4rtusi on ikkagi vaja vaid \u00fchte muutujat.<\/p>\n<p>Massiivi kasutamine abimuutuja asemel on m\u00f5istlik vaid paralleelt\u00f6\u00f6tlust toetavatele protsessoritele programme kirjutades. Sellised protsessorid p\u00f5hinevad SIMD (<em>sing-instruction-multiple-data<\/em>) arhitektuuril &#8211; n\u00e4iteks graafikakaardid (GPU &#8211; <em>graphics processing unit<\/em>). See on kusjuures levinud l\u00e4henemine ka k\u00f5iksugustes tehisaru p\u00f5histes lahendustes, mis on suuresti lihtsalt maatriksarvutused, mille p\u00f5him\u00f5tteid lineaaralgebras.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Massiivide_algvaartustamine_nulliks\"><\/span>Massiivide algv\u00e4\u00e4rtustamine nulliks<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Terve massiivi algv\u00e4\u00e4rtustamiseks nulliks paneme soovitud konstandi loogeliste sulgude vahele<\/p>\n<pre class=\"toolbar:2 lang:default decode:true\">int vector[LEN] = {0};<\/pre>\n<p>Kui tegu on 2-m\u00f5\u00f5tmelise massiiviga, kasutame kahte komplekti loogelisi sulge.<\/p>\n<pre class=\"toolbar:2 lang:default decode:true \">int matrix[ROWS][COLS] = {{0}};<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Esitamisele_kuuluvad_ulesanded\"><\/span>Esitamisele kuuluvad \u00fclesanded<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Selles tunnis loome men\u00fc\u00fcprogrammi, mis t\u00f6\u00f6tab senikaua, kuniks kasutaja soovib sellest v\u00e4ljuda. Programmi raames tegeleme maatriksi manipuleerimisega. Programmi keskmes on mitmed piirjuhtumid (n\u00e4iteks mis saab siis, kui kasutaja soovib manipuleerida maatriksit, mida ei ole olemas).<\/p>\n<p>Alusta n\u00e4idisprogrammiga tutvumisest, misj\u00e4rel saad edasi liikuda ja luua ise samalaadse rakenduse.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Tunnitoo_naidisprogramm\"><\/span>Tunnit\u00f6\u00f6 n\u00e4idisprogramm<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Sulle on antud t\u00e4nasest tunnit\u00f6\u00f6st n\u00e4idisprogramm. See on antud kompileeritud kujul, st saad selle k\u00e4ivitada ja testida, milline selle l\u00f5pptulemus peaks v\u00e4lja n\u00e4gema. Sinu loodav programm peaks l\u00f5puks t\u00f6\u00f6tama sarnaselt.<\/p>\n<p>N\u00e4idisprogrammid on kompileeritud x86-64 arhitektuurile. N\u00e4idisprogramm t\u00f6\u00f6tab kindlasti arvutiklassi arvutitel, kuid peaks ka t\u00f6\u00f6tama enamikel isiklikel arvutitel.<\/p>\n<ul>\n<li><strong><a href=\"http:\/\/blue.pri.ee\/ttu\/files\/Prog1\/10_lab_switch_linux\">N\u00e4idisprogramm (Linux)<\/a><\/strong><\/li>\n<\/ul>\n<p>NB! Programmile tuleb anda k\u00e4ivitamis\u00f5igused (see on tingitud turvalisuse n\u00f5uetest!). \u00d5iguste muutmine on \u00fchekordne tegevus. Selleks tuleb muuta faili \u00f5igusi:<\/p>\n<pre class=\"toolbar:2 lang:default highlight:0 decode:true \">chmod u+x 10_lab_switch_linux<\/pre>\n<p>See lisab (chmod &#8211; <em>change mode<\/em>) kasutajale (u &#8211; <em>user<\/em>) \u00f5igused programmi k\u00e4ivitada (x &#8211; <em>execute<\/em>). P\u00e4rast seda tohid programmi k\u00e4ivitada tavap\u00e4raselt, st <span class=\"lang:default highlight:0 decode:true crayon-inline\">.\/program_name<\/span><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Kirjeldus\"><\/span>Kirjeldus<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>T\u00e4nane tunnit\u00f6\u00f6 on jaotatud kaheks eraldi hinnatavaks osaks, millele on v\u00f5imalik lisada kolm lisa\u00fclesannet<\/p>\n<p>Tegu on programmiga, mis t\u00f6\u00f6tab kuniks kasutaja soovib sellest v\u00e4ljuda. St men\u00fc\u00fc asub ts\u00fckli sees, millest v\u00e4ljumiseks on eraldi k\u00e4sk. Lisaks peame seet\u00f5ttu programmi tegevusi tehes j\u00e4lgima, mis seisundis maatriks parasjagu on &#8211; nt ridu ei saa vahetada maatriksil, millel pole \u00fchtegi rida.<\/p>\n<p>Maatriksi maksimaalne suurus m\u00e4lus on fikseeritud makrotega <span class=\"lang:default highlight:0 decode:true crayon-inline\">LIMIT_ROWS<\/span> ja <span class=\"lang:default highlight:0 decode:true crayon-inline\">LIMIT_COLS<\/span> , mis m\u00e4\u00e4ravad vastavalt maksimaalse ridade ja veergude arvu. Need peavad rakendusse j\u00e4\u00e4ma sisse ja olema kasutusel &#8211; nt kaitsmise k\u00e4igus palume sul muuta neist vaid \u00fchte suurust!<\/p>\n<p>Programmis v\u00f5ib vastavalt kasutaja soovile olla kasutusel parasjagu v\u00e4iksem osa maatriksist &#8211; sellisel juhul j\u00e4\u00e4b lihtsalt otsa maatriksist kasutamata. Seet\u00f5ttu on funktsioonide protot\u00fc\u00fcpides igal pool 2 muutujat <span class=\"lang:default highlight:0 decode:true crayon-inline\">int rows<\/span>\u00a0 ja <span class=\"lang:default highlight:0 decode:true crayon-inline\">int cols<\/span> , mis sisaldavad hetkel kasutusel oleva maatriksi piire.<\/p>\n<p><strong>Lae alla aluskood: <a style=\"cursor: pointer !important; user-select: none !important;\" href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0583\/aluskoodid\/10_switch_basecode.c\">https:\/\/blue.pri.ee\/ttu\/files\/iax0583\/aluskoodid\/10_switch_basecode.c<\/a><\/strong><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Uldised_nouded\"><\/span>\u00dcldised n\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Need n\u00f5uded kehtivad, olenemata, millise osaga programmi lahendamisest tegeled.<\/p>\n<ul>\n<li>Sinu lahendus peab v\u00f5imalikult t\u00e4pselt matkima etteantud n\u00e4idisprogrammi.<\/li>\n<li>T\u00f6\u00f6 peab olema ehitatud etteantud aluskoodile.\n<ul>\n<li>Aluskoodi tohid m\u00f5istlikes piirides modifitseerida. N\u00e4iteks v\u00f5ib kasu olla tegevuste j\u00e4rjekorra muutmisest main() funktsioonis v\u00f5i funktsioonile <span class=\"lang:default highlight:0 decode:true crayon-inline\">GetIntInRange()<\/span> t\u00e4iendava parameetri lisamisest. Muudel juhtudel m\u00f5tle hoolikalt l\u00e4bi, kas muudatus on ikka m\u00f5istlik ja p\u00f5hjendatud!<\/li>\n<li>Aluskoodis on sinu jaoks juba valmis tehtud 2 funktsiooni, kasuta neid vastavalt vajadusele.<\/li>\n<li>Aluskoodis on ette antud kahe esimese sinu poolt loodava funktsiooni protot\u00fc\u00fcbid, millest peaksid oma lahenduse loomist alustama.<\/li>\n<\/ul>\n<\/li>\n<li>Rakendus peab t\u00f6\u00f6tama ka olukorras, kus ridade ja veergude arvud on erinevad, st tegu pole ruutmaatriksiga.<\/li>\n<li>K\u00f5ik maatriksis olevad arvud on vahemikus 0 &#8211; 99.<\/li>\n<li>K\u00f5ik toimingud peavad olema korratavad ilma programmist v\u00e4ljumata.<\/li>\n<li>K\u00f5igi men\u00fc\u00fc valikute t\u00f6\u00f6tlev pool peab olema lahendatud eraldi funktsioonides.\n<ul>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline \">switch()<\/span>\u00a0 lause sees v\u00f5id julgelt printida v\u00e4lja abiteksti, salvestada funktsioonidest tagastatavaid v\u00e4\u00e4rtusi jne. Vajadusel v\u00f5id ka m\u00f5ne <span class=\"lang:c highlight:0 decode:true crayon-inline \">if<\/span>\u00a0 lause lisada.<\/li>\n<li>\u00c4ra deklareeri switch() sees uusi muutujaid!<\/li>\n<li>Uusi ts\u00fckleid <span class=\"lang:c highlight:0 decode:true crayon-inline \">main()<\/span>\u00a0 funktsiooni kirjutada ei tohi!<\/li>\n<\/ul>\n<\/li>\n<li>Programm peab olema terviklik ja arusaadav ning t\u00f6\u00f6tama, kuniks kasutaja soovib sellest ise v\u00e4ljuda.<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Tunnitoo_osa_1_W10-1_Maatriksi_genereerimine_ja_kuvamine\"><\/span>Tunnit\u00f6\u00f6 osa 1 [W10-1]: Maatriksi genereerimine ja kuvamine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Esimeses osas loome maatriksi kuvamise ja genereerimise. \u00dclesande raames harjutad ka kindlat t\u00fc\u00fcpi ts\u00fcklite kasutamist!<\/p>\n<p><strong>N\u00f5uded<\/strong><\/p>\n<ul>\n<li>Kasutaja saab genereerida n * m maatriksi\n<ul>\n<li>Maatriksi liikmeteks on juhuarvud vahemikus 0 &#8211; 99<\/li>\n<li>n ja m on kasutaja poolt sisestatavad v\u00e4\u00e4rtused. Vajadusel loo piirangud kasutaja sisestusele<\/li>\n<li>Genereerimise funktsioonis\u00a0<span class=\"lang:default highlight:0 decode:true crayon-inline\">GenerateMatrix()<\/span>\u00a0 tohid kasutada vaid <span class=\"lang:default highlight:0 decode:true crayon-inline\">do while()<\/span>\u00a0 t\u00fc\u00fcpi ts\u00fckleid.<\/li>\n<li>Meeldetuletus: C funktsioonid on lihtsad ja teevad vaid \u00fchte asja (ning teevad seda h\u00e4sti)! Funktsioon <span class=\"lang:default highlight:0 decode:true crayon-inline\">GenerateMatrix()<\/span> <strong>ei tohi<\/strong> tegeleda kasutajalt sisendi k\u00fcsimisega!<\/li>\n<\/ul>\n<\/li>\n<li>Kasutaja saab kuvada maatriksit\n<ul>\n<li>Kuvamise funktsioonis tohid kasutada vaid <span class=\"lang:default highlight:0 decode:true crayon-inline \">while()<\/span>\u00a0 t\u00fc\u00fcpi ts\u00fckleid<\/li>\n<li>Maatriks peab olema viisakalt joondus.<\/li>\n<\/ul>\n<\/li>\n<li>Kasutaja saab v\u00e4ljuda programmist<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Tunnitoo_osa_2_W10-2_Ridade_ja_veergude_vahetamine\"><\/span>Tunnit\u00f6\u00f6 osa 2 [W10-2]: Ridade ja veergude vahetamine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Teises tunnit\u00f6\u00f6 osas loome funktsioonid ridade ja veergude omavahel vahetamiseks.<\/p>\n<ul>\n<li>Kasutaja peab saama vahetada kaks enda valitud rida omavahel\n<ul>\n<li>Vahetamise funktsioonis tohid kasutada vaid <span class=\"lang:default highlight:0 decode:true crayon-inline\">for()<\/span>\u00a0 t\u00fc\u00fcpi ts\u00fckleid.<\/li>\n<\/ul>\n<\/li>\n<li>Kasutaja peab saama vahetada kaks enda valitud veergu omavahel<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Tuupilised_vead\"><\/span>T\u00fc\u00fcpilised vead<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><em>Copy-paste<\/em> ehk korduv kood. Enamasti on selleks sisestus (nt sisesta ridade arv, sisesta veergude arv jne).<\/li>\n<li><em>Off by one<\/em> ehk \u00fchega m\u00f6\u00f6da. Meeldetuletuseks esimene rida on indeksiga 0.<\/li>\n<li>Maagilised numbrid<\/li>\n<li>Maatriksi operatsioonide lubamine enne maatriksi genereerimist. N\u00e4iteks sa ei saa kuvada maatriksid, mida ei ole veel genereeritud!<\/li>\n<li>Vale ts\u00fckli t\u00fc\u00fcbi kasutamine (Osa 1 ja 2 puhul on fikseeritud, milliseid ts\u00fckli t\u00fc\u00fcpe tohid kasutada)<\/li>\n<li>Ridade ja veergude arvu sassi ajamine. Proovi n\u00e4iteks\n<ul>\n<li>genereerida 3 x 5 maatriks, vaheta \u00e4ra read 1 ja 3<\/li>\n<li>genereerida 5 x 3 maatriks, vaheta \u00e4ra veerud 1 ja 3<\/li>\n<\/ul>\n<\/li>\n<li>Konstantide vale kasutamine &#8211; muuda maksimaalne ridade v\u00f5i veergude arvu m\u00e4\u00e4rav makro \u00e4ra ja testi oma rakendust<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_1_W10-3_Kustutamine\"><\/span>Lisa\u00fclesanne 1 [W10-3]: Kustutamine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Lisame t\u00e4iendava funktsionaalsuse olemasolevasse programmi<\/p>\n<ul>\n<li>Kasutaja saab kustutada enda valitud rea<\/li>\n<li>Kasutaja saab kustutada enda valitud veeru<\/li>\n<li>Kustutatud rida v\u00f5i veerg eemaldatakse vahelt, mist\u00f5ttu j\u00e4rgmised read v\u00f5i veerud tuuakse varasemaks. Maatriksi suurus v\u00e4heneb.<\/li>\n<li>Lisa vajalik funktsionaalsus men\u00fc\u00fcsse<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_2_lisamine\"><\/span>Lisa\u00fclesanne 2: lisamine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Lisame t\u00e4iendava funktsionaalsuse olemasolevasse programmi<\/p>\n<ul>\n<li>Kasutaja saab soovitud asukohta lisada t\u00e4iendava rea<\/li>\n<li>Kasutaja saab soovitud asukohta lisada t\u00e4iendava veeru<\/li>\n<li>K\u00f5ik elemendid lisatavasse ritta v\u00f5i veergu genereeritakse juhuarvudega<\/li>\n<li>K\u00f5ik read \/ veerud, mis paiknevad soovitud asukoha j\u00e4rel, nihkuvad \u00fche v\u00f5rra kaugemale. Maatriksi suurus suureneb.<\/li>\n<li>Lisa vajalik funktsionaalsus men\u00fc\u00fcsse.<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_3_W10-5_Transponeerimine\"><\/span>Lisa\u00fclesanne 3 [W10-5]: Transponeerimine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Lisame t\u00e4iendava funktsionaalsuse olemasolevasse programmi<\/p>\n<ul>\n<li>Kasutaja saab maatriksit transponeerida<\/li>\n<li>Lisa vajalik funktsionaalsus men\u00fc\u00fcsse<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Parast_seda_tundi_peaksid\"><\/span><span id=\"Parast_seda_tundi_peaksid\" class=\"ez-toc-section\"><\/span><strong>P\u00e4rast seda tundi peaksid<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Oskama luua l\u00f5putult kestvaid men\u00fc\u00fc-programme<\/li>\n<li>Teadma t\u00e4iendavaid k\u00e4ske teksti v\u00e4ljastamiseks<\/li>\n<li>Eristama t\u00e4hem\u00e4rki ja s\u00f5net<\/li>\n<li>Oskama edastada ja funktsioonis vastu v\u00f5tta\n<ul>\n<li>tervet maatriksit<\/li>\n<li>maatriksi \u00fchte rida<\/li>\n<li>maatriksi \u00fchte elementi<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Taiendav_materjal\"><\/span><span id=\"Taiendav_materjal\" class=\"ez-toc-section\"><\/span><strong>T\u00e4iendav materjal<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Menu-Driven program using Switch-case in C<br \/>\n<a href=\"https:\/\/www.geeksforgeeks.org\/menu-driven-program-using-switch-case-c\/\">https:\/\/www.geeksforgeeks.org\/menu-driven-program-using-switch-case-c\/<\/a><\/li>\n<li>Escape sequences in C<br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Escape_sequences_in_C\">https:\/\/en.wikipedia.org\/wiki\/Escape_sequences_in_C<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Teooriat ja meeldetuletusi T\u00e4hem\u00e4rk, s\u00f5ne ja v\u00e4ljastusfunktsioonid Kuigi s\u00f5nede juurde tuleme alles m\u00f5ne n\u00e4dala p\u00e4rast, siis m\u00f5ne omadusega teeme juba t\u00e4na tutvust. S\u00f5ne (string) t\u00e4hendab j\u00e4rjestatud t\u00e4hem\u00e4rkide jada. St selleks v\u00f5ib olla arusaadav s\u00f5na v\u00f5i lause, kuid v\u00f5ib olla ka arusaamatu erinevate s\u00fcmbolite jada. S\u00f5ned on alati jutum\u00e4rkide vahel. N\u00e4ited: &#8220;a&#8221; &#8220;Hello!&#8221; &#8220;I do wish &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/10-labor-menuuprogramm\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">PR1ET10: Men\u00fc\u00fc-programm<\/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":[97,94],"tags":[],"class_list":["post-6397","post","type-post","status-publish","format-standard","hentry","category-laborid","category-pr1-et"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/6397","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=6397"}],"version-history":[{"count":10,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/6397\/revisions"}],"predecessor-version":[{"id":11512,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/6397\/revisions\/11512"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=6397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/categories?post=6397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/tags?post=6397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}