(H) Lukusarjoja vektorissa¶
Tavoite: Opin STL:n säiliöiden perusajatuksen käyttämällä vektoria pienten operaatioiden toteuttamiseen.
Ohjeita:
Hae ohjelmakoodipohja: templates/04/container/
->
student/04/container/
.
Attention
Huomasithan lukea kohdasta 4.1 Git ja etätietovarastot (remote), 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.
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.)
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
Vinkkejä tehtävän tekemiseen:
- 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.