{"id":5433,"date":"2020-09-21T12:58:20","date_gmt":"2020-09-21T10:58:20","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?p=5433"},"modified":"2025-11-07T20:49:51","modified_gmt":"2025-11-07T18:49:51","slug":"pr1et6-massiivid-2","status":"publish","type":"post","link":"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/","title":{"rendered":"PR1ET6: Massiivid 2"},"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\/pr1et6-massiivid-2\/#Praktikumi_materjal\" >Praktikumi materjal<\/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\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Teooriakild_1_Teksti_edastamine_funktsiooni\" >Teooriakild 1: Teksti edastamine funktsiooni<\/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\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Teooriakild_2_Massiivi_vs_massiivi_liikme_edastamine\" >Teooriakild 2: Massiivi vs massiivi liikme edastamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#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-5\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Ulesanne_1_W06-1_Uute_massiivide_koostamine\" >\u00dclesanne 1 [W06-1]: Uute massiivide koostamine<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Algoritm\" >Algoritm<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Nouded\" >N\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Soovitusi_ja_vihjeid\" >Soovitusi ja vihjeid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Testimine\" >Testimine<\/a><\/li><\/ul><\/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\/pr1et6-massiivid-2\/#Ulesanne_2_W06-2_kahe_arvu_vordlus\" >\u00dclesanne 2 [W06-2]: kahe arvu v\u00f5rdlus<\/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\/pr1et6-massiivid-2\/#Nouded-2\" >N\u00f5uded<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Loodavad_funktsioonid\" >Loodavad funktsioonid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Testimine-2\" >Testimine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Testid\" >Testid<\/a><\/li><\/ul><\/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\/pr1et6-massiivid-2\/#Lisaulesanne_1_W06-3_Uhekordsed_arvud\" >Lisa\u00fclesanne 1 [W06-3]: \u00dchekordsed arvud<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Nouded-3\" >N\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Naide_lahendusest\" >N\u00e4ide lahendusest<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Lisaulesanne_2_W06-4_Vastandarvude_paarid\" >Lisa\u00fclesanne 2 [W06-4]: Vastandarvude paarid<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Nouded-4\" >N\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Testimine-3\" >Testimine<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/#Parast_tundi_peaksid\" >P\u00e4rast tundi peaksid<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Praktikumi_materjal\"><\/span><strong>Praktikumi materjal<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sel n\u00e4dalal tegeleme eelk\u00f5ige teadmiste kinnistamise ja harjutamisega<\/p>\n<ul>\n<li>Sissejuhatus <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/siluri-kasutamine-geanys\/\">siluri kasutamisse<\/a><\/strong>\n<ul>\n<li><strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/distantsi-teisendaja-massiivid-ja-funktsioonid\/\">Distantsi teisendaja n\u00e4itel<\/a><\/strong><\/li>\n<\/ul>\n<\/li>\n<li>Tutvu <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/algoritmide-ulesanded\/\">algoritmide \u00fclesannetega<\/a> <\/strong>&#8211; selliseid n\u00e4ed ka kontrollt\u00f6\u00f6s<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Teooriakild_1_Teksti_edastamine_funktsiooni\"><\/span>Teooriakild 1: Teksti edastamine funktsiooni<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sageli v\u00f5ib tekkida olukord, kus funktsioon ise oleks justkui kenasti korduvkasutatav, kuid kasutajale kuvatav tekst ei sobi. See on t\u00fc\u00fcpiline \u00fcldiste sisend- ja v\u00e4ljundfunktsioonide puhul.<\/p>\n<p>\u00dcks\u00a0 viis seda lahendada on sama, mida eelmine n\u00e4dal tegid &#8211; tr\u00fckkisid teksti enne sisendi\/v\u00e4ljundiga tegeleva funktsiooni v\u00e4ljakutset (nt loe arv, loe massiiv, v\u00e4ljasta massiiv). <strong>See j\u00e4\u00e4b j\u00e4tkuvalt mu soovituseks enamikes olukordades<\/strong>. Sedasi on funktsioon lihtsam ja kergemini korduvkasutatav.<\/p>\n<p>Teise valikuna pakun lahenduse, mis on funktsioonide koostamise m\u00f5ttes \u00fcsna tavap\u00e4rane. Vaatame \u00fchte p\u00f5hilist ideed, millal funktsioon luua &#8211;\u00a0 <strong>kui kahe koodil\u00f5igu vahel on marginaalne erinevus, mis sunnib sind koodi kopeerima, siis lahenda erinevused kasutades funktsiooni parameetreid<\/strong><strong>.\u00a0<\/strong>See saab ka meie lahenduseks &#8211; me saame v\u00e4ljastatava teksti (s\u00f5ne) v\u00f5i osa tekstist (nt s\u00f5na) edastada parameetrina.<\/p>\n<p>Selline meetod t\u00f6\u00f6tab \u00fcsna h\u00e4sti, kui kasutajale on vaja selgitada, mida ta sisestama peab (st mida programm ootab temast). Samuti sobib see enamasti ka n\u00e4iteks massiivi v\u00e4ljastamisel, kui v\u00e4ljastuse ette tuleks lisada kirjeldus.<\/p>\n<p><strong>NB! Kaks olulist m\u00f5tet veel! <\/strong>M\u00f5lemast neist r\u00e4\u00e4gime s\u00fcviti semestri teises pooles.<\/p>\n<ol>\n<li>Tekst on samamoodi massiiv &#8211; see on t\u00e4hem\u00e4rkidest koosnev massiiv. Kusjuures igal t\u00e4hem\u00e4rgil on oma indeks.<\/li>\n<li>Erinevalt arvumassiividest ei ole tekstimassiivi puhul meil selle <strong>v\u00e4ljastamiseks<\/strong> vajalik pikkust eraldi kaasa anda (p\u00e4rast viimast s\u00fcmbolit kasutatakse eris\u00fcmbolit, mis annab m\u00e4rku, kui <em>string<\/em> ehk s\u00f5ne l\u00f5peb).<\/li>\n<\/ol>\n<pre class=\"toolbar:2 lang:c decode:true\">#include &lt;stdio.h&gt;\r\n\r\n#define DEFINED_STRING \"Passing by using a macro\"\r\n\r\nvoid PrintPassedText(char text[]);\r\n\r\nint main(void)\r\n{\r\n    PrintPassedText(\"Passing by using a constant\");\r\n    \r\n    PrintPassedText(DEFINED_STRING);\r\n    \r\n    char inputString[] = \"Passing by using a variable\";\r\n    PrintPassedText(inputString);\r\n}\r\n\r\nvoid PrintPassedText(char text[])\r\n{\r\n    \/* To print double quotes, they need to be escaped first! *\/\r\n    printf(\"Text passed to this function: \\\"%s\\\"\\n\", text);\r\n}\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Teooriakild_2_Massiivi_vs_massiivi_liikme_edastamine\"><\/span>Teooriakild 2: Massiivi vs massiivi liikme edastamine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Eelmises tunnis tutvustasime, kuidas peaks massiivi edastama funktsiooni. Oluline oli<\/p>\n<ol>\n<li>Massiiv edastatakse alati viitena originaal asukohale<\/li>\n<li>Massiivi sisu saab muuta alamfunktsioonides, muudatus kehtib k\u00f5ikjal<\/li>\n<li>Massiiviga tuleb kaasa anda selle pikkus<\/li>\n<li>Massiivi edastades kasutame vaid selle nime, ilma \u00fchegi t\u00e4iendava m\u00e4rgendita.<\/li>\n<\/ol>\n<p>Samuti meeldetuletuseks, kasutades massiivi nime j\u00e4rel kantsulge keset koodi, <strong>indekseerime me selle massiivi konkreetset liiget<\/strong>.<\/p>\n<p>Siit saame kokku ka j\u00e4rgmise n\u00e4ite, kus v\u00f5rdleme massiivi vs \u00fcksiku liikme edastust massiivist.<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">#include &lt;stdio.h&gt;\r\n\r\n#define ARR_LEN 5\r\n\r\nvoid PrintNum(int num);\r\nvoid PrintIntArray(int arr[], int len);\r\n\r\nint main(void)\r\n{\r\n\tint nums[ARR_LEN] = {9, 24, -2, 3, 25};\r\n\t\r\n\t\/* Passing an entire array *\/\r\n\tPrintIntArray(nums, ARR_LEN);\r\n\t\r\n\t\/* Passing the second number in the array *\/\r\n\tPrintNum(nums[1]);\r\n\t\r\n\t\/* Passing the fourth number in the array *\/\r\n\tPrintNum(nums[3]);\r\n}\r\n\r\nvoid PrintNum(int num)\r\n{\r\n\tprintf(\"Passed number: %d\\n\\n\", num);\r\n}\r\n\r\nvoid PrintIntArray(int arr[], int len)\r\n{\r\n\tprintf(\"Numbers are: \");\r\n\tfor (int i = 0; i &lt; len; i++)\r\n\t{\r\n\t\tprintf(\"%d \", arr[i]);\r\n\t}\r\n\tprintf(\"\\n\\n\");\r\n}\r\n<\/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 tuleb lahendada kaks \u00fclesannet. Esimest \u00fclesannet laiendab kaks lisa\u00fclesannet.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Ulesanne_1_W06-1_Uute_massiivide_koostamine\"><\/span>\u00dclesanne 1 [W06-1]: Uute massiivide koostamine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Antud \u00fclesanne p\u00f5hineb suuresti algoritmi\u00fclesandel. Vastav \u00fclesanne on p\u00fcstitatud siin:\u00a0 <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/algoritmide-ulesanded\/#Algoritm_3_Negatiivsete_ja_positiivsete_arvude_umberjarjestus\">https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/algoritmide-ulesanded\/#Algoritm_3_Negatiivsete_ja_positiivsete_arvude_umberjarjestus<\/a><\/strong><\/p>\n<p>Selle algoritmi lahendus on sulle ette antud. \u00dclesandele on lisatud algoritmis puuduvaid t\u00e4iendusi.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Algoritm\"><\/span>Algoritm<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9030\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et.png\" alt=\"\" width=\"1670\" height=\"953\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et.png 1670w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et-300x171.png 300w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et-1024x584.png 1024w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et-768x438.png 768w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2020\/09\/negpos_et-1536x877.png 1536w\" sizes=\"auto, (max-width: 1670px) 100vw, 1670px\" \/><\/a><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Programm peab p\u00f5hinema etteantud algoritmil<\/li>\n<li>Kasutajalt loetakse 6 arvu ja salvestatakse need massiivi<\/li>\n<li>Programmi v\u00e4ltel koostatakse teine samapikk massiiv p\u00f5him\u00f5ttel negatiivsed arvud ettepoole, positiivsed nende j\u00e4rel. Arvu 0 loetakse positiivseks arvuks<\/li>\n<li>Programmi v\u00e4ltel koostatakse ka kolmas massiiv, kuhu kuuluvad vaid nullist suuremad arvud. Massiivi pikkus v\u00f5ib osutuda l\u00fchemaks algsest massiivist<\/li>\n<li>P\u00e4rast massiivide koostamist v\u00e4ljastatakse j\u00e4rjest k\u00f5ik 3 massiivi<\/li>\n<li>Programm peab endas sisaldama kokku <strong>nelja<\/strong> funktsiooni &#8211; arvude lugemiseks kasutajalt, arvude ekraanile v\u00e4ljastamiseks, nullist suurematest arvudest koosneva massiivi koostamiseks ning etteantud algoritmi alusel j\u00e4rjestatud massiivi koostamiseks.<\/li>\n<li>K\u00f5ik enda loodud funktsioonid peavad olema v\u00e4lja kutsutud <span class=\"lang:c highlight:0 decode:true crayon-inline \">main()<\/span>\u00a0 funktsioonist.<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Soovitusi_ja_vihjeid\"><\/span>Soovitusi ja vihjeid<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Alusta programmi koostamist <strong>sisestusest ja massiivi ekraanile kuvamisest<\/strong>. Seda oled juba eelmine kord teinud. Loo vajalik massiiv ja korduvkasuta varasemalt tehtud funktsioone. Kui kopeerid\u00a0 funktsioone eelneva n\u00e4dala \u00fclesandest, \u00e4ra unusta ka nendele eelnevat kommentaari kopeerida!<\/p>\n<p><strong>N\u00fc\u00fcd l\u00e4hme \u00fcmberj\u00e4rjestamise juurde.<\/strong> Loo uus massiiv (lisaks olemasolevale), kuhu salvestad \u00fcmberj\u00e4rjestatud arvujada. Uue massiivi pikkus on sama nagu esmase massiivi pikkus. Meenuta, et funktsioonist massiivi tagastada ei ole v\u00f5imalik, seega massiiv tuleb deklareerida\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline \">main()<\/span> funktsioonis ja edastada funktsioonile. \u00dcmberj\u00e4rjestamise \u00fclesande lahendamiseks j\u00e4lgi <strong>etteantud algoritmi<\/strong>, mis oli esitatud veidi \u00fclevalpool.<\/p>\n<p>Seej\u00e4rel kutsu uuesti v\u00e4lja massiivi v\u00e4ljastamise funktsioon, sel korral \u00fcmberj\u00e4rjestatud massiivi v\u00e4ljastamiseks. St kood v\u00f5iks funktsiooni v\u00e4ljakutsete m\u00f5ttes n\u00e4ha v\u00e4lja umbes sarnane (nimed ei ole olulised):<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">ReadIntArray(inputNumbers, NUM_CNT);\r\nCreateRearrangedArray(inputNumbers, rearrangedNumbers, NUM_CNT);\r\n\r\nprintf(\"Printing the original array: \");\r\nPrintIntArray(inputNumbers, NUM_CNT);\r\n\r\nprintf(\"Printing the modified array: \");\r\nPrintIntArray(rearrangedNumbers, NUM_CNT);\r\n\r\n<\/pre>\n<p>Siinkohal kui soovid oma <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsiooni puhtamaks saada, siis tasuks massiivi v\u00e4ljastuse ette minev tekst parameetriga kaasa anda. <strong>Selleks vaata esimest teooriakildu!<\/strong><\/p>\n<p>N\u00fc\u00fcd liigu viimase funktsiooni juurde, mis peaks ainult nullist suurematest arvudest massiivi koostama. Struktuurilt on koostamine \u00fcsna sarnane eelnevalt tehtud \u00fcmberj\u00e4rjestusele, kuid m\u00f5ned erinevused siiski eksisteerivad. Kui \u00fcmberj\u00e4rjestatud massiiv oli liikmete arvult samapikk algse massiiviga, siis nullist suuremate arvude massiiv tuleb suure t\u00f5en\u00e4osusega l\u00fchem. <strong>M\u00f5tle, kuidas saada koostatud massiivi pikkus alamfunktsioonist v\u00e4lja,\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsiooni! <\/strong>Kui pikkus k\u00e4es, kutsu j\u00e4lle <span class=\"lang:c highlight:0 decode:true crayon-inline \">main()<\/span>\u00a0 funktsioonis v\u00e4lja massiivi v\u00e4ljatr\u00fckk, et ka kolmas massiiv ekraanile v\u00e4ljastada.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Testimine\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Esimese testina proovime tavap\u00e4rast juhtu, kui sisestuses on nii positiivseid kui negatiivseid arve.<\/p>\n<pre class=\"theme:cisco-router toolbar:1 nums:false lang:default highlight:0 decode:true\" title=\"Sample 1: Min ind 0\">Enter number 1 \/ 6: 6\r\nEnter number 2 \/ 6: -9\r\nEnter number 3 \/ 6: 3\r\nEnter number 4 \/ 6: -12\r\nEnter number 5 \/ 6: 0\r\nEnter number 6 \/ 6: 4\r\n\r\nThe original array\r\n6 -9 3 -12 0 4\r\n\r\nThe rearranged array\r\n-9 -12 6 3 0 4\r\n\r\nThe greater than 0 array\r\n6 3 4<\/pre>\n<p>Arvesta, et antud olukorras v\u00f5ivad ka nullist suuremad arvud puududa. V\u00e4ljastus peaks j\u00e4\u00e4ma j\u00e4tkuvalt arusaadavaks.<\/p>\n<pre class=\"theme:cisco-router toolbar:1 nums:false lang:default highlight:0 decode:true\" title=\"Sample 1: Min ind 0\">Enter number 1 \/ 6: -1\r\nEnter number 2 \/ 6: -4\r\nEnter number 3 \/ 6: -66\r\nEnter number 4 \/ 6: -97\r\nEnter number 5 \/ 6: -3\r\nEnter number 6 \/ 6: -5\r\n\r\nThe original array\r\n-1 -4 -66 -97 -3 -5\r\n\r\nThe rearranged array\r\n-1 -4 -66 -97 -3 -5\r\n\r\nThe greater than 0 array\r\nEmpty array\r\n<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Ulesanne_2_W06-2_kahe_arvu_vordlus\"><\/span><strong>\u00dclesanne 2 [W06-2]: kahe arvu v\u00f5rdlus<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Teises \u00fclesandes praktiseerime massiivi indekseerimist, p\u00f6\u00f6rdudes vaid soovitud massiivi indeksite poole ning teostame lihtsaid operatsioone leitud v\u00e4\u00e4rtustega.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Nouded-2\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>Loe klaviatuurilt 5 t\u00e4isarvu<\/li>\n<li>K\u00fcsi kasutajalt kahe soovitud arvu positsioon (j\u00e4rjekorranumber)\n<ul>\n<li>Kontrolli, et need oleksid sobilikus vahemikus enne j\u00e4tkamist! Vajadusel k\u00fcsi uuesti<\/li>\n<li>Numeratsioon peab olema sama nagu sisendit k\u00fcsides<\/li>\n<li>Soovitus: kontrollimaks kas leidsid \u00f5iged arvud, tr\u00fcki need v\u00e4lja<\/li>\n<\/ul>\n<\/li>\n<li>Leia sisestatud positsioonide p\u00f5hjal nendele vastavad arvud algsest massiivist. Kasutades neid arve tee j\u00e4rgnevat:\n<ul>\n<li>V\u00f5rdle neid kahte arvu ning kuva nende omavaheline suhe (v\u00e4iksem, suurem, v\u00f5rdne)<\/li>\n<li>Koosta jagamistehe ning kuva selle vastus. Tehe tuleb koostada sedasi, et suurem arv on jagatav ning v\u00e4iksem arv on jagaja.<\/li>\n<li>Vastus anna \u00fche komakohaga<\/li>\n<\/ul>\n<\/li>\n<li>\u00dclesandes on vaja luua neli funktsiooni. Funktsioonid on sulle v\u00e4hemal v\u00f5i rohkemal m\u00e4\u00e4ral kirjeldatud j\u00e4rgnevas peat\u00fckis.<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Loodavad_funktsioonid\"><\/span>Loodavad funktsioonid<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><strong>1. Massiivi lugemine<\/strong>. Selleks korduvkasuta koodi varasematest programmidest. Kopeeri funktsioon koos sellele eelneva kommentaariga.<\/p>\n<p><strong>2. Indeksi lugemine<\/strong>. Selleks tuleks luua uus funktsioon. Loome korduvkasutatava funktsiooni, mida saad tulevikus kasutada igal korral, kui on vaja kasutajalt lugeda t\u00e4isarv kindlas vahemikus (nt 0 &#8230; 5, -10 &#8230; 10 jne).\u00a0<em>Kui tegid eelmine n\u00e4dal lisa\u00fclesande \u00e4ra, on sul see funktsioon suure t\u00f5en\u00e4osusega juba olemas.\u00a0<\/em><\/p>\n<p>Pakun v\u00e4lja kaks funktsiooni varianti, vali kumb meelep\u00e4rasem tundub ja realiseeri see.<\/p>\n<p>Esimene versioon eeldab, et kasutajale esitatav k\u00fcsimus k\u00fcsitakse v\u00e4ljaspool seda funktsiooni.<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">\/**\r\n * Description:    Asks the user for an integer in between the given limits.\r\n *                 Repeats until requirements are met and returns the number.\r\n *\r\n * Parameters:     min - lower bound for the user input (inclusive)\r\n *                 max - upper bound for the user input (inclusive)\r\n *\r\n * Return:         number within the specified limits\r\n *\/\r\nint GetIntInRange(int min, int max)\r\n{\r\n\r\n}<\/pre>\n<p>Teine versioon eeldab, et k\u00fcsimus saadetakse funktsiooni kaasa ja v\u00e4ljastatakse selle sees. Vaata esimest teooriakildu.<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">\/**\r\n * Description:    Asks the user for an integer in between the given limits.\r\n *                 Repeats until requirements are met and returns the number.\r\n *\r\n * Parameters:     min - lower bound for the user input (inclusive)\r\n *                 max - upper bound for the user input (inclusive)\r\n *                 prompt - prompt for user input, printed before entry\r\n *\r\n * Return:         number within the specified limits\r\n *\/\r\nint GetIntInRange(int min, int max, char prompt[])\r\n{\r\n\r\n}<\/pre>\n<p><strong>3. Arvude v\u00f5rdlemine.<\/strong> Siia funktsiooni tuleks edastada 2 arvu, mida v\u00f5rreldakse omavahel, ning v\u00e4ljastatakse kumb neist oli suurem (v\u00f5i olid nad v\u00f5rdsed). V\u00e4ljastus toimub funktsiooni sees. V\u00e4ljastus on kujul &#8220;a &lt; b&#8221;, &#8220;a &gt; b&#8221; v\u00f5i &#8220;a = b&#8221;<\/p>\n<p><strong>NB! Arvude edastamiseks siia funktsiooni vaata teist infokildu!<\/strong><\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">\/**\r\n * Description:    Compares the given values (val1 and val2) and prints \r\n *                 results of the comparison (which is greater; or equal)\r\n *\r\n * Parameters:     val1 - first value being compared\r\n *                 val2 - second value being compared\r\n *\r\n * Return:         -\r\n *\/\r\nvoid CompareValues(int val1, int val2)\r\n{\r\n\r\n}<\/pre>\n<p><strong>4. Jagatise teostamine.<\/strong>\u00a0 Siia funktsiooni edastatakse samamoodi kaks arvu. Taaskord toimub arvude v\u00f5rdlemine nagu ka eelmine kord, kuid sel korral m\u00e4\u00e4rab v\u00f5rdluse tulemus jagamistehte operandide j\u00e4rjekorra.<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">\/**\r\n * Description:    Compares the given values (val1 and val2). Performs the\r\n *                 division by dividing greater number with the smaller number.\r\n *                 Both division operation and result are printed.\r\n *\r\n * Parameters:     val1 - first value\r\n *                 val2 - second value\r\n *\r\n * Return:         -\r\n *\/\r\nvoid DivideValues(int val1, int val2)\r\n{\r\n\r\n}<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Testimine-2\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>NB! N\u00e4ites on n\u00e4htavale j\u00e4etud silumiseks kasutatavad read (algusega DEBUG), mida soovitan ka sinul alguses teha. Need saad hiljem kiirelt v\u00e4lja kommenteerida.<\/p>\n<pre class=\"theme:cisco-router toolbar:1 nums:false lang:default highlight:0 decode:true\" title=\"Sample 1: Min ind 0\">Enter number 1 \/ 5: 5\r\nEnter number 2 \/ 5: -5\r\nEnter number 3 \/ 5: 24\r\nEnter number 4 \/ 5: 9\r\nEnter number 5 \/ 5: 1\r\n\r\nEnter first index: -5\r\nError! Index must be within 1 and 5!\r\nEnter first index: -7\r\nError! Index must be within 1 and 5!\r\nEnter first index: 0\r\nError! Index must be within 1 and 5!\r\nEnter first index: 4\r\nDEBUG: Corresponding value: 9\r\n\r\nEnter second index: 3\r\nDEBUG: Corresponding value: 24\r\n\r\n9 &lt; 24\r\n24 \/ 9 = 2.7\r\n<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Testid\"><\/span>Testid<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>J\u00e4rgnevalt pakun v\u00e4lja\u00a0<strong>osalise<\/strong> loetelu testidest, mida proovida<\/p>\n<ul>\n<li>Proovi koodi sisenditega, mis peaksid andma tulemuse ilma \u00fchegi veata<\/li>\n<li>Proovi indekseid, mis on massiivi piiridest v\u00e4ljas.\u00a0 Katseta seda nii esimese kui teise sisendiga.<\/li>\n<li>Proovi massiivi piiridest v\u00e4lja j\u00e4\u00e4vaid indekseid korduvalt, et programm ei l\u00e4heks edasi enne, kui sobilik sisend on saadud.<\/li>\n<li>Proovi piirjuhtusid\n<ul>\n<li>Kui loendasid 0 &#8211; 4, proovi -1, 0, 4, 5<\/li>\n<li>Kui loendasid 1 &#8211; 5, proovi 0, 1, 5, 6<\/li>\n<\/ul>\n<\/li>\n<li>Proovi sisendeid, mis testiksid l\u00e4bi k\u00f5ik 3 v\u00f5rdlusjuhtu (&lt;, &gt;, ==)<\/li>\n<li>Proovi nulliga jagamist. <strong>NB! Nulliga jagamine on defineerimata operatsioon. Nulliga jagamine v\u00f5ib jooksutada programmi v\u00f5i isegi kogu arvuti kokku <\/strong>(mikrokontrollerite puhul on tavap\u00e4rane, et terve seade taask\u00e4ivitab end nulliga jagamise tulemusel).\u00a0<strong>Nulliga jagamistehet ei tohi sooritada!<\/strong><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_1_W06-3_Uhekordsed_arvud\"><\/span><strong>Lisa\u00fclesanne 1 [W06-3]: \u00dchekordsed arvud<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u00dclesanne on tunnit\u00f6\u00f6 #1 laiendus.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded-3\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>\u00dclesanne peab olema tehtud laiendusena baas\u00fclesandele. Baas\u00fclesande funktsionaalsus peab s\u00e4ilima t\u00e4ies ulatuses.<\/li>\n<li>Loo uus massiiv olemasolevate arvude p\u00f5hjal. Uus massiiv tuleb luua p\u00f5him\u00f5ttel, et k\u00f5ik numbrid tohivad esineda vaid \u00fchekordselt.<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Naide_lahendusest\"><\/span>N\u00e4ide lahendusest<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<pre class=\"theme:cisco-router toolbar:1 nums:false lang:default highlight:0 decode:true\" title=\"Sample 1: Min ind 0\">Enter number 1 \/ 6: -5\r\nEnter number 2 \/ 6: 3\r\nEnter number 3 \/ 6: 9\r\nEnter number 4 \/ 6: 3\r\nEnter number 5 \/ 6: -5\r\nEnter number 6 \/ 6: 5\r\n\r\nThe original array: \r\n-5 3 9 3 -5 5\r\n\r\nThe rearranged array: \r\n-5 -5 3 9 3 5\r\n\r\nThe greater than 0 array: \r\n3 9 3 5\r\n\r\nThe nonrecurrent array: \r\n-5 3 9 5<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_2_W06-4_Vastandarvude_paarid\"><\/span><strong>Lisa\u00fclesanne 2 [W06-4]: Vastandarvude paarid<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u00dclesanne on tunnit\u00f6\u00f6 #1 laiendus.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded-4\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>\u00dclesanne peab olema tehtud laiendusena baas\u00fclesandele. Baas\u00fclesande funktsionaalsus peab s\u00e4ilima t\u00e4ies ulatuses.<\/li>\n<li>Leia ja kuva massiivis olevate arvude ja nende vastandarvude paarid.<\/li>\n<li>Samu arve tohib paarina kuvada \u00fchekordselt, olenemata arvude j\u00e4rjestusest v\u00f5i korduste arvust.<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Testimine-3\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Testimisel veendu, et paarid ei korduks.<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:default highlight:0 decode:true\" title=\"Sample 1: Min ind 0\">Enter number 1 \/ 6: 1\r\nEnter number 2 \/ 6: 5\r\nEnter number 3 \/ 6: -1\r\nEnter number 4 \/ 6: -5\r\nEnter number 5 \/ 6: 5\r\nEnter number 6 \/ 6: 224\r\n\r\nThe original array\r\n1 5 -1 -5 5 224\r\n\r\nThe rearranged array\r\n-1 -5 1 5 5 224\r\n\r\nThe greater than 0 array\r\n1 5 5 224\r\n\r\nThe nonrecurrent array\r\n1 5 -1 -5 224\r\n\r\nPairs: (-1, 1) (-5, 5)<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Parast_tundi_peaksid\"><\/span><span id=\"After_the_class,_you_should_be_able_to\" class=\"ez-toc-section\"><\/span><strong>P\u00e4rast tundi peaksid<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Oskama s\u00f5nesid (teksti) funktsioonidesse edastada<\/li>\n<li>Oskama funktsiooni edastada nii terviklikku massiivi kui ka \u00fcksikut massiivi liiget<\/li>\n<li>Oskama koostada ning kasutada massiive, mille k\u00f5ik liikmed (positsioonid) ei ole kasutusel<\/li>\n<li>Tundma end mugavamalt massiivi k\u00e4sitledes ka juhtudel, kus l\u00e4bik\u00e4ik pole esimesest elemendist viimaseni<\/li>\n<li>Oskama kopeerida \u00fchest massiivist arve teise massiivi, kusjuures kasutades kahte erinevat indeksit \u00fches samas ts\u00fcklis erinevate massiivide indekseerimiseks.<\/li>\n<li>Tundma ennast juba natuke kodusemalt funktsioone kasutades<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Praktikumi materjal Sel n\u00e4dalal tegeleme eelk\u00f5ige teadmiste kinnistamise ja harjutamisega Sissejuhatus siluri kasutamisse Distantsi teisendaja n\u00e4itel Tutvu algoritmide \u00fclesannetega &#8211; selliseid n\u00e4ed ka kontrollt\u00f6\u00f6s Teooriakild 1: Teksti edastamine funktsiooni Sageli v\u00f5ib tekkida olukord, kus funktsioon ise oleks justkui kenasti korduvkasutatav, kuid kasutajale kuvatav tekst ei sobi. See on t\u00fc\u00fcpiline \u00fcldiste sisend- ja v\u00e4ljundfunktsioonide puhul. \u00dcks\u00a0 &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr1-et\/pr1et6-massiivid-2\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">PR1ET6: Massiivid 2<\/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-5433","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\/5433","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=5433"}],"version-history":[{"count":30,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/5433\/revisions"}],"predecessor-version":[{"id":10882,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/5433\/revisions\/10882"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=5433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/categories?post=5433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/tags?post=5433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}