• Ei tuloksia

Olio-ohjelmointi 2-välikoe 9.12.2009 Mallivastaukset (Copyright Antti Vänskä)

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Olio-ohjelmointi 2-välikoe 9.12.2009 Mallivastaukset (Copyright Antti Vänskä)"

Copied!
5
0
0

Kokoteksti

(1)

Olio-ohjelmointi 2-välikoe 9.12.2009 Mallivastaukset (Copyright Antti Vänskä)

1. Tee vector-luokkaa käyttävä ohjelma, joka kysyy käyttäjältä lukuja, kunnes syötetään 0.

Ohjelma tulostaa luvut suuruusjärjestyksessä pienimmästä suurimpaan.

#include <iostream>

#include <vector>

using namespace std;

int main() {

vector <float> luvut;

vector <float>::iterator it;

float luku, i=1;

do {

cout << "Luku " << i << ": ";

cin >> luku;

if (luku!=0)

luvut.push_back(luku);

i++;

} while(luku!=0);

sort(luvut.begin(),luvut.end());

cout << endl << "Luvut j\x84rjestyksess\x84:" << endl;

for (it=luvut.begin();it!=luvut.end();it++) cout << *it << endl;

return 0;

}

2 Tee luokka kolmio, joka sisältää tietojäseninä mielivaltaisen kolmion sivun pituudet (a, b ja c). Luokan on pystyttävä tarjoamaan seuraavat palvelut:

Sivunpituuksien alustus haluttuihin alkuarvoihin

Sivunpituuksien muuttaminen ohjelman aikana

Sivunpituuksien tulostus ylikuormatulla tulostusoperaattorilla

Kolmion pinta-alan laskenta

Periytymistä ei tarvitse käyttää

Mielivaltaisen kolmion pinta-ala lasketaan ns. Heronin kaavalla.

(2)

#include <iostream>

#include <math.h>

using namespace std;

class kolmio {

private:

double a;

double b;

double c;

public:

kolmio(double x, double y, double z) {

a=x;

b=y;

c=z;

}

void set_pituudet() {

cout << endl << "Sivu a:n uusi pituus: ";

cin >> a;

cout << "Sivu b:n uusi pituus: ";

cin >> b;

cout << "Sivu c:n uusi pituus: ";

cin >> c;

}

double laske_ala() {

double ala;

ala=(sqrt((a+b+c)*(a+b-c)*(b+c-a)*(c+a-b)))/4;

return ala;

}

friend ostream& operator << (ostream &, const kolmio &);

};

ostream& operator << (ostream &os, const kolmio &k) {

os << "a = " << k.a << endl;

os << "b = " << k.b << endl;

os << "c = " << k.c << endl;

return os;

}

(3)

int main() {

kolmio kuvio(-6,6,67);

cout << endl << "Alustetut arvot:" << endl;

cout << kuvio;

kuvio.set_pituudet();

cout << endl << "Muutetut arvot:" << endl;

cout << kuvio;

cout << endl << "Kolmion pinta-ala: " <<

kuvio.laske_ala() << endl;

return 0;

}

3) Johda kolmioluokasta aliluokat tasakylkinen_kolmio ja tasasivuinen_kolmio. Tee luokkiin tarvittavat muodostimet sekä metodit, joiden avulla voit laskea kolmioiden pinta-alat.

Testaa luokkien toiminta pääohjelman avulla.

#include <iostream>

#include <math.h>

using namespace std;

class kolmio {

protected:

double a;

double b;

double c;

public:

kolmio() {}

void set_pituudet() {

cout << endl << "Sivu a:n uusi pituus: ";

cin >> a;

cout << "Sivu b:n uusi pituus: ";

cin >> b;

cout << "Sivu c:n uusi pituus: ";

cin >> c;

}

double laske_ala() {

double ala;

ala=(sqrt((a+b+c)*(a+b-c)*(b+c-a)*(c+a-b)))/4;

return ala;

(4)

}

friend ostream& operator << (ostream &, const kolmio

&);

};

ostream& operator << (ostream &os, const kolmio &k) {

os << "a = " << k.a << endl;

os << "b = " << k.b << endl;

os << "c = " << k.c << endl;

return os;

}

class tasakylkinen_kolmio : public kolmio {

public:

tasakylkinen_kolmio(double x, double y) {

a=b=x;

c=y;

}

double laske_ala() {

double ala;

ala=(sqrt((a+b+c)*(a+b-c)*(b+c-a)*(c+a-b)))/4;

return ala;

} };

class tasasivuinen_kolmio : public kolmio {

public:

tasasivuinen_kolmio(double x) {

a=b=c=x;

}

double laske_ala() {

double ala;

ala=(sqrt((a+b+c)*(a+b-c)*(b+c-a)*(c+a-b)))/4;

return ala;

} };

int main() {

(5)

tasakylkinen_kolmio kuvio1(5,3);

tasasivuinen_kolmio kuvio2(7);

cout << endl << "Tasakylkisen kolmion pituudet:" << endl;

cout << kuvio1;

cout << "Pinta-ala: " << kuvio1.laske_ala() << endl;

cout << endl << "Tasasivuisen kolmion pituudet:" << endl;

cout << kuvio2;

cout << "Pinta-ala: " << kuvio2.laske_ala() << endl;

return 0;

}

Viittaukset

LIITTYVÄT TIEDOSTOT

Lisää luokkaan parametrillinen muodostin, jonka avulla olio voidaan alustaa luonnin yhteydessä haluttuun päivämäärään, esimerkiksif. Date tomorrow(20,4,2005);

jolle syötetään kaksi kokonaislukua, ja joka palauttaa toden, jos luvut ovat samat, ja epätoden, jos ne eivät ole samoja.. Tee myös pääohjelma, jonka avulla voit testata

Tee ohjelma, joka sisältää laatikko-luokan. Luokan tietojäseninä ovat laatikon syvyys, leveys ja korkeus. Toteuta luokkaan muodostin, jonka avulla olio voidaan alustaa. Toteuta

Arvoa kasvatetaan funktiossa f lauseella ::i++; Ensimmäisen kutsun jälkeen arvo on siis 1 ja toisen kutsun jälkeen 2.. Muuttuja 2 on pääohjelmassa määritelty

Kirjoita STL:n vector-luokkaa käyttävä ohjelma, joka kysyy käyttäjältä

Arvoa kasvatetaan funktiossa f lauseella ::i++; Ensimmäisen kutsun jälkeen arvo on siis 1 ja toisen kutsun jälkeen 2.. Muuttuja 2 on pääohjelmassa määritelty

tietotyyppi nimi(tietotyyppi *muuttuja, tietotyyppi *tietue, tietotyyppi *taulukko, tietotyyppi *tietuetaulukko …);. • Määrittely

• Jokaisen arvonnan jälkeen tietokone kysyy pelaajalta, haluaako pelaaja uuden kortin vai jääkö pelaaja kyseiseen summaan. • Pelaajan jälkeen tietokone arpoo