• Ei tuloksia

2. Tee päivämäärän käsittelyyn tarkoitettu luokka pvm. Luokan tulee sisältää seuraavat asiat (5 p):

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "2. Tee päivämäärän käsittelyyn tarkoitettu luokka pvm. Luokan tulee sisältää seuraavat asiat (5 p): "

Copied!
4
0
0

Kokoteksti

(1)

T740103 Olio-ohjelmointi (3 op) HYV6SN

2. välikoe 12.12.2007

1. Tee aliohjelmamallia (function template) käyttävä funktio, joka palauttaa return-lauseella kutsuvaan ohjelmaan kahdesta annetusta parametrista suuremman. Testaa funktion toimintaa kokonaisluvuilla, merkeillä ja liukuluvuilla. (5 p)

#include <iostream>

using namespace std;

template <typename T>

T suurempi(T &x,T &y);

int main() {

int eka=2,toka=4;

cout << suurempi(eka,toka) << endl;

system("PAUSE");

}

template <typename T>

T suurempi(T &x,T &y) {

if (x>y) return x;

else

return y;

}

2. Tee päivämäärän käsittelyyn tarkoitettu luokka pvm. Luokan tulee sisältää seuraavat asiat (5 p):

a. Yksityiset tietojäsenet (tyyppiä int, automaattinen muistinvarausluokka) päivä, kuukausi ja vuosi.

b. Oletusmuodostin

c. Parametrillinen muodostin

d. Metodi, jonka avulla päivämäärä voidaan tulostaa

e. Pääohjelma, jossa luokkaa ja sen ominaisuuksia käytetään.

(2)

#include <iostream>

using namespace std;

class pvm {

private:

int paiva,kuukausi,vuosi;

public:

pvm() {

paiva=0;

kuukausi=0;

vuosi=0;

}

pvm(int p,int k,int v) {

paiva=p;

kuukausi=k;

vuosi=v;

}

void tulosta() {

cout << paiva << ":";

cout << kuukausi << ":";

cout << vuosi << endl;

} };

int main() {

pvm tanaan(12,12,2007);

tanaan.tulosta();

system("PAUSE");

return 0;

}

3. Lisää päivämääräluokkaan ylikuormattu operaattori ==, joka vertaa kahta päivämäärää. Operaattori palauttaa totuusarvon true tai false sen perusteella, ovatko vertailtavat päivämäärät samat tai erit. Esitä myös, mitä muutoksia tehtävän 2 pääohjelmaan tulee tehdä jotta

vertailuoperaattoria voidaan testata.

Luokkaan lisäys:

bool operator == (const pvm &p) {

if (this -> paiva == p.paiva &&\

this -> kuukausi == p.kuukausi &&\

this -> vuosi == p.vuosi) return true;

else

return false;

}

(3)

int main() {

pvm tanaan(12,12,2007);

pvm huomenna(13,12,2007);

tanaan.tulosta();

cout << (tanaan == huomenna) << endl;

return 0;

}

4. Luo yleinen luokka Rakennus, joka ylläpitää tietoa rakennuksen kerrosten ja huoneiden lukumäärästä sekä kokonaispinta-alasta.

a. Luo johdettu luokka Talo, joka perii rakennuksen ja ylläpitää tietoja makuuhuoneiden ja kylpyhuoneiden lukumääristä.

b. Luo johdettu luokka Toimisto, joka perii rakennuksen ja ylläpitää tietoja varauloskäytävien ja puhelimien lukumääristä.

Tee pääohjelma, jonka avulla testaat luokkiesi toimivuutta.

class Rakennus {

private:

int kerrosten_lkm;

int huoneiden_lkm;

double pinta_ala;

public:

Rakennus(int k,int h,double a) {

kerrosten_lkm=k;

huoneiden_lkm=h;

pinta_ala=a;

}

Rakennus() {

kerrosten_lkm=0;

huoneiden_lkm=0;

pinta_ala=0;

}

void tulosta() {

cout << "Kerrosten lukumäärä " << kerrosten_lkm;

cout << " Huoneiden lukumäärä " << huoneiden_lkm;

cout << " Pinta-ala " << pinta_ala << endl;

} };

class Talo : public Rakennus {

private:

int makuuhuoneiden_lkm;

int kylpyhuoneiden_lkm;

(4)

public:

Talo(int m,int k) {

makuuhuoneiden_lkm=m;

kylpyhuoneiden_lkm=k;

}

void tulosta() {

cout << "Makuuhuoneiden lukumäärä " <<\

makuuhuoneiden_lkm << endl;

cout << "Kylpyhuoneiden lukumäärä " <<\

kylpyhuoneiden_lkm << endl;

} };

class Toimisto : public Rakennus {

private:

int varauloskaytavien_lkm;

int puhelimien_lkm;

public:

Toimisto(int v,int p) {

varauloskaytavien_lkm=v;

puhelimien_lkm=p;

}

void tulosta() {

cout << "Varauloskäytävien lukumäärä " <<

varauloskaytavien_lkm << endl;

cout << "Puhelimien lukumäärä " <<

puhelimien_lkm << endl;

} };

int main() {

Rakennus rakennus_olio(3,18,6000);

Talo talo_olio(3,2);

Toimisto toimisto_olio(1,20);

rakennus_olio.tulosta();

talo_olio.tulosta();

toimisto_olio.tulosta();

return 0;

}

Viittaukset

LIITTYVÄT TIEDOSTOT

Piirrä suorakulmainen kolmio ja merkitse annetusta tiedosta kulmaan liittyvät kaksi sivuaB. Laske Pythagoraan lauseella kolmion

Piirrä suorakulmainen kolmio ja merkitse annetusta tiedosta kulmaan liittyvät kaksi sivuaB. Laske Pythagoraan lauseella kolmion

Funktion ja käänteisfunktion kuvaajat ovat peilikuvia suoran y = x suhteen Käänteisfunktion kuvaajan piirtäminen alkuperäisen funktion kuvaajan avulla.. Tee alkuperäiselle

Tee Matlab funktio (ilmaisin.m), joka tekee kovat bittipäätökset input vektorille ja tulostaa bittipäätökset 0/1 output vektoriin.. Testaa koko kooderi,kanava,ilmaisin ketju

Funktion input parametrina tulee olla nauhoitusaika sekunteina ja output parametrina on vektori, joka sisältää nauhoitetun signaalin amplitudinäytteet.. Tee matlab funktio, jolla

Tee matlab funktio BER_mittari, joka ottaa input parametreinaan kaksi vektoria (lähetetty ja vastaanotettu bittivektori) ja laskee virheiden lukumäärän.. Suunnittele ja tee

Toteuta Matlab funktio, joka muuttaa inputtina annetun tekstin binääriseen muotoon ja antaa bitit paluuarvona vektorissa2. Tee myös toinen funktio, joka muuttaa inputtina

Tee Matlab funktio dekooderi, joka ottaa input parametreinaan kaksi matriisia (residuaalisignaalit ja ennustussuodattimen kertoimet) ja tulostaa output parametrinaan