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

  1. Avaa etätyöpöytäpalvelin ja kirjaudu sisään. Päivitä etätyöpalvelimella oleva repositoriosi klooni.
  2. Avaa Qt Creator etätyöpöytäpalvelimella.
  3. 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.
  4. 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.