{"id":8058,"date":"2023-01-29T17:35:12","date_gmt":"2023-01-29T15:35:12","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?p=8058"},"modified":"2026-02-06T18:39:16","modified_gmt":"2026-02-06T16:39:16","slug":"pr2et1-viidad","status":"publish","type":"post","link":"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/","title":{"rendered":"PR2ET1: Viidad"},"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\/pr2-et\/pr2et1-viidad\/#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\/pr2-et\/pr2et1-viidad\/#Meeldetuletuseks_koodimisstiilist\" >Meeldetuletuseks koodimisstiilist<\/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\/pr2-et\/pr2et1-viidad\/#Ulesanded\" >\u00dclesanded<\/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\/laborid\/pr2-et\/pr2et1-viidad\/#Ulesanne_1_W01-1_Viidad_ja_muutujad\" >\u00dclesanne 1 [W01-1]: Viidad ja muutujad<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Teooriakild_stderr_standardvoog\" >Teooriakild: stderr standardvoog<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Teooriakild_Aluskoodis_uued_makrod\" >Teooriakild: Aluskoodis uued makrod<\/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\/pr2-et\/pr2et1-viidad\/#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\/pr2-et\/pr2et1-viidad\/#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-9\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Ulesanne_2_osa_1_W01-2_Viidad_ja_massiivid\" >\u00dclesanne 2 osa 1 [W01-2]: Viidad ja massiivid<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Nouded-2\" >N\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Testimine-2\" >Testimine<\/a><\/li><\/ul><\/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\/pr2-et\/pr2et1-viidad\/#Ulesanne_2_osa_2_W01-3_Massiivi_tolgendamine\" >\u00dclesanne 2 osa 2 [W01-3]: Massiivi t\u00f5lgendamine<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#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-14\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Testimine-3\" >Testimine<\/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\/pr2-et\/pr2et1-viidad\/#Lisaulesanne_W01-4_MinMax_koos_aadressidega\" >Lisa\u00fclesanne [W01-4]: MinMax koos aadressidega<\/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\/pr2-et\/pr2et1-viidad\/#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-17\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Testimine-4\" >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-18\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#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-19\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/#Taiendavat_materjali\" >T\u00e4iendavat materjali<\/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<ul>\n<li>Slaidid: <a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/slaidid-et\/00_sissejuhatus.pdf\"><strong>Sisseju<\/strong><strong>h<\/strong><strong>atus<\/strong><\/a><\/li>\n<li>Slaidid: <a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/slaidid-et\/01_viidad.pdf\"><strong>Viidad<\/strong><\/a><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Meeldetuletuseks_koodimisstiilist\"><\/span>Meeldetuletuseks koodimisstiilist<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Koodimisstiil peab olema \u00fchtne k\u00f5igis koodifailides<\/li>\n<li>Kood peaks olema lihtsasti loetav ja hallatav<\/li>\n<li>V\u00e4ldi p\u00f5hjendamatult keeruka koodi kirjutamist<\/li>\n<li>T\u00fckelda oma kood funktsioonideks\n<ul>\n<li>Funktsioonid peaksid olema lihtsad, l\u00fchikesed ja tegema vaid \u00fchte asja ning tegema seda h\u00e4sti.<\/li>\n<li>Hoia arvutamine ja v\u00e4ljastus erinevates funktsioonides. Tulemusi leidvad funktsioonid peaksid olema eelistatult k\u00f5rvalm\u00f5judeta.<\/li>\n<li>Funktsioonid peaksid olema kergelt korduvkasutatavad (sh tulevikus kontrollt\u00f6\u00f6s, eksamil)<\/li>\n<li>main() funktsioon on k\u00f5ige esimene funktsioon failis. Enda loodud funktsioonid paiknevad p\u00e4rast main funktsiooni.<\/li>\n<\/ul>\n<\/li>\n<li>Kasuta kiireid algoritme ja andmestruktuure (minimaalselt seni \u00f5pitute hulgast)<\/li>\n<li>V\u00e4ldi globaalmuutujaid (selles aines n\u00e4eme ka olukordi kus globaalmuutujad on OK)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Ulesanded\"><\/span><span id=\"Tasks\" class=\"ez-toc-section\"><\/span>\u00dclesanded<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Selles praktikumis on kaks \u00fclesannet. Teine \u00fclesanne on t\u00fckeldatud kahte ossa. Lisa\u00fclesanne on ehitatud teise \u00fclesande p\u00f5hjal.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Ulesanne_1_W01-1_Viidad_ja_muutujad\"><\/span>\u00dclesanne 1 [W01-1]: Viidad ja muutujad<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Tegu on klassikalise muutuja v\u00e4\u00e4rtuse vahetamise \u00fclesandega. Proovi lahendada \u00fclesanne ilma igasuguse kolmanda abi ega materjalita!<\/p>\n<p>Lae alla \u00fclesande aluskood: <strong><a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/aluskoodid\/t1_swap_template.c\">https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/aluskoodid\/t1_swap_template.c<\/a><\/strong><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Teooriakild_stderr_standardvoog\"><\/span>Teooriakild: stderr standardvoog<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Sellest semestrist hakkame veav\u00e4ljundeid regulaarselt stderr standardvoogu v\u00e4ljastama. Tegu on standardl\u00e4henemisega enamikes programmeerimiskeeltes, sealhulgas C keeles. See v\u00f5imaldab \u00fchtlasi ka n\u00e4iteks vigu programmi v\u00e4ljundist h\u00f5lpsalt v\u00e4lja filtreerida &#8211; uuri &#8220;<em>redirect stderr to file<\/em>&#8220;.<\/p>\n<p>Vanaviisi: prindime veateated <span class=\"lang:c highlight:0 decode:true crayon-inline \">stdout<\/span>\u00a0 standardvoogu: <span class=\"lang:c highlight:0 decode:true crayon-inline \">printf(&#8220;Error! &#8230;.&#8221;);<\/span><\/p>\n<p>Sellest semestrist: tr\u00fckime veateated <span class=\"lang:c highlight:0 decode:true crayon-inline \">stderr<\/span>\u00a0 standardvoogu: <span class=\"lang:c highlight:0 decode:true crayon-inline \">fprintf(stderr, &#8220;Error! &#8230;&#8221;);<\/span><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Teooriakild_Aluskoodis_uued_makrod\"><\/span>Teooriakild: Aluskoodis uued makrod<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Lugedes aluskoodi m\u00e4rkad, et selles on kasutusel <span class=\"lang:c highlight:0 decode:true crayon-inline \">__FUNCTION__<\/span>\u00a0 nimeline s\u00f5ne. Selle sisu lahendatakse \u00e4ra kompileerimise k\u00e4igus &#8211; \u00e4ra seda ise k\u00e4sitsi \u00fcmber kirjuta! Alates C99 standardist v\u00f5ib selle asemel kirjutada ka <span class=\"lang:c highlight:0 decode:true crayon-inline \">__func__<\/span> .<\/p>\n<p>T\u00e4iendavalt kasutatakse sageli veel kahte makrot:<\/p>\n<ul>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">__LINE__<\/span>\u00a0v\u00e4ljastab koodirea numbri, millel makro asub<\/li>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline \">__FILE__<\/span>\u00a0 v\u00e4ljastab koodifaili nime, milles makro asub<\/li>\n<\/ul>\n<p>Tegu on levinud v\u00f5tetega koodi silumiseks. N\u00e4iteks saame kirjutada:<\/p>\n<pre class=\"lang:c decode:true\">fprintf(stderr, \"Error: Unexpected NULL-ptr in function %s at %s:%d\\n\", \r\n        __func__, __FILE__, __LINE__);<\/pre>\n<p>Nii on lihtne j\u00e4lgida mis failis, mis funktsioonis ja millisel real tekkis viga.<\/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>Ehita oma lahendus aluskoodile<\/li>\n<li>Aluskoodis on koodil\u00f5igud, mille l\u00f5petamine on j\u00e4etud sinu \u00fclesandeks. Need on m\u00e4rgitud koodis kommentaariga <span class=\"lang:c highlight:0 decode:true crayon-inline \">TODO<\/span>\u00a0.<\/li>\n<li>Loo kaks funktsiooni vastavalt aluskoodis olevatele kommentaaridele. \u00dches neist tuleb v\u00e4\u00e4rtused kasutajalt k\u00fcsida ja salvestada ning teises funktsioonis tuleb need v\u00e4\u00e4rtused omavahel vahetada. M\u00f5lemad funktsioonid toetuvad viitade kasutamisele.<\/li>\n<li>Tr\u00fcki v\u00e4lja muutujate m\u00e4luaadressid kolmes erinevas kohas\n<ol>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioonis &#8211; n\u00e4ita kus muutujate v\u00e4\u00e4rtused hoiustatud on<\/li>\n<li>Lugemise funktsioonis &#8211; n\u00e4ita kuhu kohta loetavad v\u00e4\u00e4rtused salvestatakse<\/li>\n<li>Vahetamise funktsioonis &#8211; n\u00e4ita kus asuvad need v\u00e4\u00e4rtused mida parasjagu vahetad.<\/li>\n<\/ol>\n<\/li>\n<li><strong>Kaitsmisel selgita mis on kuvatud v\u00e4\u00e4rtuste puhul oluline!<\/strong><\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Testimine\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:default highlight:0 decode:true\">risto@risto-lt3:~\/Nextcloud\/work\/ttu\/teaching\/_generic\/prog2\/lab\/pointers$ .\/t1_swap\r\nAddresses in function main\r\nx @ 0x7ffffd82f7d0\r\ny @ 0x7ffffd82f7d4\r\n\r\nAddresses in function ReadValues\r\nx @ 0x7ffffd82f7d0\r\ny @ 0x7ffffd82f7d4\r\n\r\nEnter value x: 19\r\nEnter value y: 4\r\n\r\nOriginal values in main\r\nx = 19\r\ny = 4\r\n\r\nAddresses in function SwapValues\r\nx @ 0x7ffffd82f7d0\r\ny @ 0x7ffffd82f7d4\r\n\r\nUpdated values in main\r\nx = 4\r\ny = 19\r\n<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Ulesanne_2_osa_1_W01-2_Viidad_ja_massiivid\"><\/span>\u00dclesanne 2 osa 1 [W01-2]: Viidad ja massiivid<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Teise \u00fclesande eesm\u00e4rgiks on tutvuda viitade ja massiivide koos kasutamisega. Lisaks harjutame ka viidaaritmeetikat ja meenutame eelmisel semestril \u00f5pitud failide ning k\u00e4sureaargumentide kasutamist.<\/p>\n<p>Programm vajab kasutamiseks andmefaili, mis sisaldab t\u00e4isarve. Andmefail loo ise! Arvud v\u00f5ivad olla eraldatud kas t\u00fchikute v\u00f5i reavahetustega.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded-2\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Loo programm, mis<\/p>\n<ul>\n<li>Loeb failist 10 t\u00e4isarvu ja salvestab need massiivi<\/li>\n<li>Faili nimi loetakse k\u00e4sureaargumendina<\/li>\n<li>Kuvab massiivi m\u00e4luaadress main() funktsioonis<\/li>\n<li>V\u00e4ljastab loetud arvud ning nende m\u00e4luaadressid<\/li>\n<li>Leiab minimaalse ja maksimaalse arvu massiivist<\/li>\n<\/ul>\n<p>Kehtivad kitsendused<\/p>\n<ul>\n<li>\u00dclesande v\u00e4ltel ei tohi massiivi indekseerimiseks kasutada kantsulge <span class=\"lang:c highlight:0 decode:true crayon-inline \">[]<\/span>\u00a0 (massiivi deklareerimisel see piirang ei kehti). Rakenda k\u00f5igis funktsioonides indekseerimiseks viida-aritmeetikat.<\/li>\n<li>Programmi t\u00f6\u00f6 katkestatakse juhul, kui faili ei eksisteeri v\u00f5i failist ei \u00f5nnestunud t\u00e4isarve lugeda &#8211; nt failis oli midagi muud.<\/li>\n<li>Sulle on ette antud loetelu funktsioonidest, mis tuleb realiseerida<\/li>\n<li>K\u00f5ik \u00fclesannete n\u00f5uetes olevad funktsioonid tuleb v\u00e4lja kutsuda <span class=\"lang:c highlight:0 decode:true crayon-inline \">main()<\/span>\u00a0 funktsioonis<\/li>\n<li>\u00dclesande tulemusena leitavad minimaalne ja maksimaalne v\u00e4\u00e4rtus v\u00e4ljastatakse <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioonis.<\/li>\n<li>K\u00f5ik veateated tuleb kirjutada <span class=\"lang:c highlight:0 decode:true crayon-inline \">stderr<\/span>\u00a0 voogu.<\/li>\n<\/ul>\n<p>Loo j\u00e4rgnevad funktsioonid<\/p>\n<ul>\n<li>Funktsioon, mis loeb failist 10 arvu ning salvestab need massiivi\n<ul>\n<li>Valikuline: Soovi korral v\u00f5id lisada massiivi liikmete m\u00e4luaadresside v\u00e4ljatr\u00fcki siia funktsiooni, et v\u00f5rrelda neid aadressidega teistes funktsioonides.<\/li>\n<li>Parameetriteks: massiiv, massiivi lubatud suurus, faili nimi<\/li>\n<li>Tagastus: mitu arvu failist loeti<\/li>\n<li>Funktsiooni k\u00e4igus on oluline v\u00e4ltida rohkemate numbrite lugemist, kui massiivi mahub.<\/li>\n<li>J\u00e4rgnevalt on sulle antud ka funktsiooni osaline lahendus, t\u00e4ida puuduvad osad ise.\n<pre class=\"lang:c decode:true \">int ReadValuesFromFile(int *arr, int arrayMaxSize, const char *fileName)\r\n{\r\n    \/\/ Open the file and check if it opened\r\n    \r\n    \/\/ Read a maximum of arrayMaxSize integers\r\n    int i = 0;\r\n    while (i &lt; arrayMaxSize)\r\n    {\r\n        \/\/ TODO: Read a number from file and store the return value for checking\r\n        int ret = fscanf();\r\n        \r\n        \/\/ Something happened - either file ended or input format was incorrect\r\n        if (ret != 1)\r\n        {\r\n            \/\/ Stop reading integers and return the number of members read\r\n            break;\r\n        }\r\n        \r\n        \/\/ Increment successfully read integer count\r\n        i++;\r\n    }\r\n    \r\n    \/\/ TODO: Close the input file    \r\n    fclose();\r\n    \r\n    \/\/ TODO: Return the number of integers read\r\n    return ;\r\n}\r\n<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Vihje: Funktsiooni v\u00e4ljakutse loetavuse huvides on soovitatav k\u00e4sureaargument eraldi viita salvestada, n\u00e4iteks j\u00e4rgnevalt\n<pre class=\"lang:c decode:true \">\/\/ Grab the file name\r\nchar *inputFile = argv[1];\r\n\r\n\/\/ Read data from file, \r\nint numCnt = ReadValuesFromFile(nums, LEN, inputFile);<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>Funktsioon, mis v\u00e4ljastab k\u00f5ik loetud arvud ning nende asukoha m\u00e4lus.\n<ul>\n<li>Parameetriteks massiivi nimi ja massiivi suurus!<\/li>\n<\/ul>\n<\/li>\n<li>Funktsioon, mis leiab korraga nii minimaalse kui maksimaalse arvu massiivist\n<ul>\n<li>Seda funktsiooni tohid v\u00e4lja kutsuda vaid \u00fche korra, m\u00f5lemad tulemused tuleb leida korraga<\/li>\n<li>Funktsioon ei tohi tagastada midagi (st tagastuse t\u00fc\u00fcp on\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline \">void<\/span> ).<\/li>\n<li>V\u00f5id eeldada, et eksisteerib vaid \u00fcks v\u00e4him ja \u00fcks suurim arv.<\/li>\n<li>Kasuta eelnevas \u00fclesandes tutvutud viitade omadustega minimaalse ja maksimaalse v\u00e4\u00e4rtuse <span class=\"lang:c highlight:0 decode:true crayon-inline \">main()<\/span>\u00a0 funkitsiooni saamiseks. Funktsioon ei tohi ise tulemusi v\u00e4ljastada!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Testimine-2\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Baas\u00fclesande testimisel on neli v\u00f5imalikku tulemust<\/p>\n<ol>\n<li>K\u00e4sureaargumendid puuduvad, programm annab veateate ja sulgub<\/li>\n<li>Fail ei avane, programm annab veateate ja sulgub<\/li>\n<li>Failis ei ole \u00fchtegi t\u00e4isarvu, programm annab veateate ja sulgub<\/li>\n<li>Failis on v\u00e4hemalt mingi kogus t\u00e4isarve, maksimaalselt 10 t\u00fckki loetakse ja v\u00e4ljastatakse koos leitud minimaalse ja maksimaalse v\u00e4\u00e4rtusega.<\/li>\n<\/ol>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:default highlight:0 decode:true\">risto@risto-lt:~\/pr2\/wk1_pointers$ .\/task2 nums.txt \r\nArray address in main(): 0x7ffd30f10220\r\n\r\nPrinting data from file\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22\r\n0x7ffd30f10240: -1\r\n0x7ffd30f10244: 7\r\n\r\nMin: -22\r\nMax: 51<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Ulesanne_2_osa_2_W01-3_Massiivi_tolgendamine\"><\/span>\u00dclesanne 2 osa 2 [W01-3]: Massiivi t\u00f5lgendamine<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Selle \u00fclesande eesm\u00e4rk on veenduda, et m\u00f5istad korrektselt ideed <strong>&#8220;massiiv on k\u00e4sitletav kui viit esimesele massiivi liikmele&#8221;<\/strong>.<\/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>Loo (v\u00f5i korduvkasuta \ud83d\ude09 ) funktsioon, mis suudaks massiivist v\u00e4lja tr\u00fckkida n numbrit ja m\u00e4luaadressi.<\/li>\n<li>Funktsioonil tohib olla vaid 2 parameetrit.<\/li>\n<li>Funktsioon peab olema ehitatud sedasi, et see suudaks v\u00e4ljastada \u00fcksk\u00f5ik millise etteantud massiivi<\/li>\n<li>N\u00e4itamaks, et su funktsioon on tehtud \u00f5igesti (ning veelgi enam, t\u00f5estamaks, et m\u00f5istsid teemat \u00f5igesti), kutsu loodavat funktsiooni v\u00e4lja 3 korda sedasi, et\n<ul>\n<li>esimene kord tr\u00fckitakse v\u00e4lja kogu massiiv<\/li>\n<li>teine kord tr\u00fckitakse v\u00e4lja vaid elemendid 0 &#8211; 4<\/li>\n<li>kolmas kord tr\u00fckitakse v\u00e4lja elemendid 3 &#8211; 7<\/li>\n<li>Elementide vahemike m\u00e4\u00e4ramisel v\u00f5id kasutada maagilisi arve selles \u00fclesandes<\/li>\n<\/ul>\n<\/li>\n<li>NB! Mis juhtub, kui failist loeti v\u00e4iksem kogus arve?<\/li>\n<\/ul>\n<p><strong>Vihje:\u00a0<\/strong>M\u00f5tle enne hoolikalt kui hakkad funktsiooni koostama! \u00dclesande eesm\u00e4rk on veenduda, et saad massiivi ja viida omavahelisest seosest \u00f5igesti aru.\u00a0 \u00dclesande eesm\u00e4rk ei ole luua \u00fclimalt keerulist v\u00f5i kavalat lahendust!<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Testimine-3\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Selle \u00fclesande puhul on kaks v\u00f5imalikku tulemust<\/p>\n<ol>\n<li>Massiiv on piisavalt pikk, programm v\u00e4ljastab soovitud tulemuse.<\/li>\n<li>Massiivis ei ole piisavalt liikmeid, programm annab veateate.<\/li>\n<\/ol>\n<p>J\u00e4rgnevas n\u00e4ites on ootusp\u00e4rane v\u00e4ljund, kui massiiv on piisavalt pikk<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:default highlight:0 decode:true\">risto@risto-lt:~\/pr2\/wk1_pointers$ .\/task2 nums.txt \r\nArray address in main(): 0x7ffd30f10220\r\n\r\nPrinting data from file\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f10228: 15\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22\r\n0x7ffd30f10240: -1\r\n0x7ffd30f10244: 7\r\n\r\nMin: -22\r\nMax: 51\r\n\r\nArray print from 0 to 9\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f10228: 15\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22\r\n0x7ffd30f10240: -1\r\n0x7ffd30f10244: 7\r\n\r\nArray print from 0 to 4\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f10228: 15\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n\r\nArray print from 3 to 7\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_W01-4_MinMax_koos_aadressidega\"><\/span>Lisa\u00fclesanne [W01-4]: MinMax koos aadressidega<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Selles \u00fclesandes taasloome teise \u00fclesande esimeses osas loodud ekstreemv\u00e4\u00e4rtuste leidmise funktsiooni. Teeme muudatuse mis lubab meil lisaks v\u00e4\u00e4rtusele saada ka asukoha, j\u00e4llegi kasutades viitade omadusi<\/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>Loo uus funktsioon v\u00f5i muuda olemasolevat sedasi, et leida minimaalse ja maksimaalse arvu asukoht. Funktsioon peab leidma m\u00f5lema asukoha \u00fche k\u00e4ivitusega.<\/li>\n<li>Funktsioon ei tohi tagastada midagi (st tagastuse t\u00fc\u00fcp on\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline \">void<\/span> ).<\/li>\n<li>Funktsioonil tohib olla t\u00e4pselt 4 parameetrit\n<ul>\n<li>Massiiv arvudega<\/li>\n<li>Massiivi pikkus<\/li>\n<li>2 viita v\u00f5i topeltviita &#8211; m\u00f5tle v\u00e4lja mis nendes hoida sobiks!<\/li>\n<\/ul>\n<\/li>\n<li>Tr\u00fcki v\u00e4lja j\u00e4rgnevad tulemused main funktsioonis\n<ul>\n<li>Minimaalne ja maksimaalne arv<\/li>\n<li>Minimaalse ja maksimaalse arvu aadressid massiivis<\/li>\n<li>Minimaalse ja maksimaalse arvu indeksid massiivis<\/li>\n<li>NB! Aadressi ja indeksi leidmiseks ei tohi sa t\u00e4iendavalt massiivi uuesti l\u00e4bi k\u00e4ia! Tulemuste saamiseks tuleb kasutada viitade omadusi ja arvutada vastused funktsioonist saadavate tulemuste p\u00f5hjal!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Testimine-4\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Lisa\u00fclesande lahendusena oodatav v\u00e4ljund<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false lang:default highlight:0 decode:true\">risto@risto-lt:~\/pr2\/wk1_pointers$ .\/task2 nums.txt \r\nArray address in main(): 0x7ffd30f10220\r\n\r\nPrinting data from file\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f10228: 15\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22\r\n0x7ffd30f10240: -1\r\n0x7ffd30f10244: 7\r\n\r\nMin: -22\r\nMax: 51\r\n\r\nArray print from 0 to 9\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f10228: 15\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22\r\n0x7ffd30f10240: -1\r\n0x7ffd30f10244: 7\r\n\r\nArray print from 0 to 4\r\n0x7ffd30f10220: 5\r\n0x7ffd30f10224: 9\r\n0x7ffd30f10228: 15\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n\r\nArray print from 3 to 7\r\n0x7ffd30f1022c: 12\r\n0x7ffd30f10230: 8\r\n0x7ffd30f10234: 0\r\n0x7ffd30f10238: 51\r\n0x7ffd30f1023c: -22\r\n\r\nMin -22; address 0x7ffd30f1023c; index 7\r\nMax 51; address 0x7ffd30f10238; index 6<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Parast_seda_tundi_peaksid\"><\/span><span id=\"After_the_class_you_should\" class=\"ez-toc-section\"><\/span><strong>P\u00e4rast seda tundi peaksid<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>m\u00f5istma aine n\u00f5udeid, sh kuidas hinne kujuneb<\/li>\n<li>teadma, mis on viit<\/li>\n<li>oskama m\u00f5ista m\u00e4luaadressi iseloomu<\/li>\n<li>tegema vahet virtuaalsel ja f\u00fc\u00fcsilisel aadressil<\/li>\n<li>teadma, mis m\u00f5jutab m\u00e4luaadressi suurust<\/li>\n<li>teadma t\u00e4iendavast m\u00e4luvajadusest ja keerukusest mis tuleb viitade otsese kasutamisega<\/li>\n<li>oskama viitmuutujat deklareerida<\/li>\n<li>teadma, kuidas viitadega koodi kirjutada l\u00e4htuvalt koodimisstiilist<\/li>\n<li>teadma, mis t\u00e4htsus on viida andmet\u00fc\u00fcbil<\/li>\n<li>teadma, mis on\u00a0 NULL-viit ja kus seda kasutatakse<\/li>\n<li>teadma m\u00f5ningaid valdkondi, kus viitasid kasutatakse<\/li>\n<li>teadma ja oskama kasutada viida-aritmeetikat<\/li>\n<li>m\u00f5istma scanf argumente ja kuidas viidad ning aadressid siin m\u00e4ngu tulevad<\/li>\n<li>m\u00f5istma, miks me eelmine semester \u00fctlesime, et massiivi edastamisel manipuleerime originaalandmeid ning muutujate puhul mitte<\/li>\n<li>osksama muutujate m\u00e4luaadresse funktsioonidesse edastada<\/li>\n<li>oskama mitme muutuja v\u00e4\u00e4rtust \u00fche funktsiooni sees manipuleerida kasutades viitasid<\/li>\n<li>m\u00f5istma topeltviida ideed<\/li>\n<li>oskama kasutada tingimuslausete koostamiseks kolmikoperaatorit<\/li>\n<li>oskama kasutada GCC makrosid faili ja funktsiooni nime ning rea numbri leidmiseks<\/li>\n<li>teadma millal ja kuidas kasutada stderr standardvoogu<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Taiendavat_materjali\"><\/span><span id=\"Additional_content\" class=\"ez-toc-section\"><\/span><strong>T\u00e4iendavat materjali<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Predefined macros<br \/>\n<strong><a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/cpp\/Standard-Predefined-Macros.html\">https:\/\/gcc.gnu.org\/onlinedocs\/cpp\/Standard-Predefined-Macros.html<\/a><\/strong><\/li>\n<li>Beej&#8217;s Guide to C Programming: Pointers\u2014Cower In Fear!<br \/>\n<strong><a href=\"https:\/\/beej.us\/guide\/bgc\/html\/split\/pointers.html#pointers\">https:\/\/beej.us\/guide\/bgc\/html\/split\/pointers.html#pointers<\/a><\/strong><\/li>\n<li>Beej\u2019s Guide to C Programming: Pointers II: Arithmetic<br \/>\n<strong><a href=\"https:\/\/beej.us\/guide\/bgc\/html\/split\/pointers2.html#pointers2\">https:\/\/beej.us\/guide\/bgc\/html\/split\/pointers2.html#pointers2<\/a><\/strong><\/li>\n<li>C pointers<br \/>\n<strong><a href=\"https:\/\/www.geeksforgeeks.org\/c-pointers\">https:\/\/www.geeksforgeeks.org\/c-pointers<\/a><\/strong><\/li>\n<li>Pointers &#8211; CS50 shorts<br \/>\n<strong><a href=\"https:\/\/www.youtube.com\/watch?v=XISnO2YhnsY\">https:\/\/www.youtube.com\/watch?v=XISnO2YhnsY<\/a><\/strong><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Praktikumi materjal Slaidid: Sissejuhatus Slaidid: Viidad Meeldetuletuseks koodimisstiilist Koodimisstiil peab olema \u00fchtne k\u00f5igis koodifailides Kood peaks olema lihtsasti loetav ja hallatav V\u00e4ldi p\u00f5hjendamatult keeruka koodi kirjutamist T\u00fckelda oma kood funktsioonideks Funktsioonid peaksid olema lihtsad, l\u00fchikesed ja tegema vaid \u00fchte asja ning tegema seda h\u00e4sti. Hoia arvutamine ja v\u00e4ljastus erinevates funktsioonides. Tulemusi leidvad funktsioonid peaksid olema &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2-et\/pr2et1-viidad\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">PR2ET1: Viidad<\/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":[176],"tags":[],"class_list":["post-8058","post","type-post","status-publish","format-standard","hentry","category-pr2-et"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8058","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=8058"}],"version-history":[{"count":29,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8058\/revisions"}],"predecessor-version":[{"id":11204,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8058\/revisions\/11204"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=8058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/categories?post=8058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/tags?post=8058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}