Kurssiaihe 7 tehtävät¶
Note
Nämä ovat viikon 7 harjoitukset. Palautusten määräaika on tällä kertaa poikkeuksellisesti Perioditauon jälkeen. Ennen kuin aloitat harjoitukset, varmista että sinulla on viimeisin versio harjoitusreposta:
git pull course-upstream main
Miten suorittaisit seuraavat tehtävät käyttäen STL-algoritmeja?
Harjoitukset palautetaan kopioimalla palautuksen git-commit HASH.
Viimeisimmät päivitykset upstream-reposta saat käyttöösi komennolla git pull course-upstream main
.
Toteuta puuttuvat algoritmit/funktiot tiedostoihin wk03_stl/stl/stl1.cc
.. wk03_stl/stl/stl8.cc
,
oma tiedosto kullekin algoritmille.
Kaikissa tehtävissä, sinun tulee sis käyttää STL algoritmeja manipuloimaan säiliöitä ja palauttamaan EXIT_SUCCESS. Ainoa tilanne, jossa EXIT_FAILURE palautetaan on tilanne, jossa STL-algoritmin suoritus katkeaa virheen takia (näin ei pitäisi käydä jos käytät algoritmia oikeaoppisesti)
Projektin avaaminen Qt Creatorissa (Etätyöpöytäpalvelimella)¶
Nämä ohjeet on tarkoitettu niille, jotka käyttävät etätyöpöytäpalvelinta. Jos käytät omaa tietokonettasi, jotkut ohjeista eivät ehkä koske sinua riippuen käyttämäsi Qt Creatorin versiosta.
Muistutuksena, tuni tarjoaa etätyöpöytäpalvelimen kaikille opiskelijoille. Noudata ohjeita käyttöoikeuksien hankkimiseksi ja asennusprosessiin täällä: https://www.tuni.fi/en/it-services/handbook/networks/linux-ssh-and-remote-desktop-servers
- Avaa etätyöpöytäpalvelin ja kirjaudu sisään. Päivitä etätyöpalvelimella oleva repositoriosi klooni.
- Avaa Qt Creator etätyöpöytäpalvelimella.
- Avataksesi projektin Qt Creatorissa, sinun täytyy avata projektitiedosto (tässä tapauksessa
wk03_stl/stl/stl.pro
) Qt Creatorissa valitsemalla File->Open File or Project. Navigoi sitten stl.pro-tiedostoon repositoriossa ja avaa se. - QT Creator pyytää sinua konfiguroimaan projektin. Jos Build&Run -Kit Desktop Qt 6.1.1 GCC 64bit on jo valittuna, voit napsauttaa Konfiguroi projekti, joka avaa projektin.
Funktioidesi testaaminen¶
Projekti sisältää testitapaukset kaikille harjoituksille, jotka voidaan suorittaa paikallisesti komentoriviparametrien avulla.
Komentoriviparametrien muuttaminen Qt Creatorissa¶
Mene Projektit-välilehdelle ikkunan vasemmalla puolella. Valitse sitten Suorita-välilehti. Komentoriviparametreja voi muuttaa Argumentit-kentässä (Komentorivin argumentit).
Esimerkkejä komentoriviparametreista¶
Esimerkiksi, jos haluat testata STL-algoritmi 1 vektorilla, jonka koko on 10, sinun on lisättävä seuraavat komentoriviparametrit:
1 10
STL-algoritmi 3:ssa, sinun on lisättävä seuraava komentoriviargumentti etsiäksesi arvoa 5 vektorista, jonka koko on 10:
3 10 5
Attention
Seuraavissa harjoituksissa on tarkoitus käyttää STL-kirjaston tarjoamia funktioita ja algoritmeja, ja siksi for ja while -silmukoiden käyttäminen ei ole sallittua, poikkeuksena std::for_each
Voit käyttää cplusplus.comin algoritmisivuja tai vastaavia resursseja avuksesi.
Harjoitukset käyttävät seuraavia kahta STL-containeria:
std::vector<int> v;
std::map<std::string, int> m;
STL-algoritmi 1, järjestä nousevasti¶
Järjestä annettu vektori nousevaan järjestykseen.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl1.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 2, järjestä laskevasti¶
Järjestä annettu vektori laskevaan järjestykseen.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl2.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 3, löydä annettu arvo¶
Palauta osoitin, joka osoittaa annetun arvon ensimmäiseen esiintymään. Jos
arvoa ei löydy, palauta sen sijaan v.end()
.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl3.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 4, löydä viimeinen parillinen arvo¶
Palauta osoitin, joka osoittaa vektorin viimeiseen parilliseen kokonaislukuun. Jos
parillisia arvoja ei ole, palauta sen sijaan v.rend()
.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl4.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 5, järjestä jakojäännöksen perusteella¶
- Järjestä vektori kolmeen peräkkäiseen osaan:
- ne, jotka ovat jaollisia kolmella (nouseva järjestys)
- ne, joiden jakojäännös on 1 (nouseva järjestys)
- ne, joiden jakojäännös on 2 (nouseva järjestys)
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl5.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 6, löydä arvo mapista¶
Etsi mapista sellainen elementti, jonka arvo on vähintään yhtä suuri kuin annettu
arvo, huolimatta elementin avaimesta. Huomaa, että mapin elementit ovat
tyyppiä std::pair<std::string, int>
, ja avaimen voi saada käyttöön
.first
-kentän kautta ja arvon .second
-kentän kautta.
Palauta vain löydetty arvo tai NOT_FOUND
(test.hh:ssa määritelty vakio)
jos mikään arvoista ei täytä etsimiskriteereitä.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl6.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 7, löydä mediaani¶
Etsi mediaani annetusta vektorista, jonka elementit ovat satunnaisessa järjestyksessä.
Palauta NOT_FOUND
(test.hh:ssa määritelty vakio), jos vektorin koko on nolla.
Lue lisää mediaanista ja sen laskemisesta:
HUOM Aina kun mediaani palautetaan, pyöristä arvo alaspäin lähimpään kokonaislukuun.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl7.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.
STL-algoritmi 8, poista arvot¶
Poista vektorista v kaikki elementit, joiden arvo on pienempi kuin annettu raja-arvo.
Vastauksesi tulee olla tiedostossa wk03_stl/stl/stl8.cc
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.