(H) Lukusarjoja vektorissa¶
Tavoite:
Opin STL:n säiliöiden perusajatuksen käyttämällä vektoria pienten
operaatioiden toteuttamiseen.
Lisäksi harjoittelen erilaisia tapoja käyttää C++:n toistorakenteita
(for
-silmukkaa).
Ohjeita:
Hae ohjelmakoodipohja: templates/04/container/
->
student/04/container/
.
Muistutus
Huomasithan lukea edellisen kierroksen lopusta (tai valikosta vasemmalta “Uusien koodipohjien haku”) miten toimia, jotta saisit uudet myöhemmin julkaistut koodipohjat käyttöösi.
Ohjelmakoodipohjassa on valmiina pääohjelma, jossa käytetään kokonaislukuvektoria. Toteuta funktiot, joita pääohjelmassa kutsutaan. Pääohjelmaa ei saa muuttaa.
Funktio print_integers
on toteutettu valmiiksi.
Funktio read_integers
on osittain toteutettu.
Jatka toteutus valmiiksi.
Funktio antaa käyttäjän syöttää niin monta lukua kuin jälkimmäinen parametri
määrää, ja tallentaa luvut ensimmäisenä parametrina olevaan vektoriin.
(HUOM! Pohdi myös, miksi tehtävänannon laatija on päättänyt välittää
vektorin parametrina eikä paluuarvona.)
Funktio same_values
palauttaa totuusarvon, joka kertoo, ovatko
kaikki vektorissa olevat luvut samoja.
Funktio is_ordered_non_strict_ascending
palauttaa totuusarvon, joka kertoo,
ovatko vektorissa olevat luvut ei-tiukassa nousevassa suuruusjärjestyksessä
(identtiset arvot sallitaan).
Funktio is_arithmetic_series
palauttaa totuusarvon, joka kertoo,
muodostavatko vektorissa olevat luvut aritmeettisen lukusarjan.
(Sarja on aritmeettinen, jos sen peräkkäisten termien erotus on vakio.)
Funktio is_geometric_series
palauttaa totuusarvon, joka kertoo,
muodostavatko vektorissa olevat luvut geometrisen lukusarjan.
(Sarja on geometrinen, jos sen peräkkäisten termien suhdeluku on vakio.
Kokonaislukusarjalla tämä suhdeluku on rationaaliluku,
jolloin pelkistä nollista koostuvaa sarjaa ei pidetä geometrisena.)
Funktio triple_integers
kolminkertaistaa vektorissa olevat luvut.
Esimerkki ohjelman toiminnasta:
How many integers are there? 4
Enter the integers: 1 2 4 8
All the integers are not the same
The integers are in a non-strict ascending order
The integers do not form an arithmetic series
The integers form a geometric series
Tripled values: 3 6 12 24
Vinkkejä tehtävän tekemiseen:
- Mieti, millainen
for
-lause parhaiten sopii kuhunkin funktioon. - Osittain valmiiksi toteutetussa
read_integers
-funktiossa on demonstroitu yksinkertaisin mahdollinen tapa lukea useita kokonaislukuja C++:ssa. Kannattaa kuitenkin huomata, että kun syöttöoperaattori>>
ohittaa kaiken tyhjän tilan käyttäjän syötteessä, niin myöskin rivinvaihdot ohitetaan. Voit testata ohjelmaa myös siten, että syötät jokaisen kokonaisluvun omalle rivilleen.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.