You are on page 1of 2

Objektno orijentirano programiranje

ispit
10. siječanj 2003.

1. (25 bodova)
Za zadanu klasu:

class point {
int x, y;
public:
point(int x, int y) : x(x), y(y) {}
};

napišite operator- (vraća centralno simetričnu točku) kao funkciju član i operator<< kao globalnu
funkciju koja ispisuje točku u obliku (x, y).

2. (35 bodova)
Napišite interface za geometrijski lik te implementaciju za krug i kvadrat.
U programu u listu pointera na lik stavite nekoliko objekata i pozovite funkciju koja ispisuje ukupnu površinu
svih likova. Obavezno obrisati sve alocirane objekte.

3. (40 bodova)
Napišite program koji sa standardnog ulaza učitava cijele brojeve i stavlja ih u vektor dok se ne unese nula.
Tada se na standardni izlaz ispišu svi brojevi sortirani od većeg ka manjem.
Objektno orijentirano programiranje
rješenja ispita
10. siječanj 2003.

1.
class point {
int x, y;
public:
point(int x, int y) : x(x), y(y) {}

point operator-() const;


friend std::ostream& operator<<(std::ostream& os, const point& raz);
};

point point::operator-() const {


return point(-x, -y);
}

std::ostream& operator<<(std::ostream& os, const point& p){


return os << '(' << p.x << ',' << p.y << ')';
}

2.
#include <iostream>
#include <list>
using namespace std;

class shape { class circle : public shape {


public: double r;
virtual double area() const = 0; public:
virtual ~shape() = 0; circle(double r) : r(r) {}
}; double area() const { return r*r*3.14; }
};
shape::~shape() {}
class square : public shape {
double a;
public:
square(double a) : a(a) {}
double area() const { return a*a; }
};

void print_total_area(const list<shape*>& sl){


double sum(0);
for(list<shape*>::const_iterator cit = sl.begin(); cit != sl.end(); ++cit)
sum += (*cit)->area();
cout << sum;
}

int main(){
list<shape*> sl;
sl.push_back(new circle(1.5));
sl.push_back(new square(4.));
print_total_area(sl);
for(list<shape*>::iterator it = sl.begin(); it != sl.end(); ++it)
delete *it;
}

3.
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

int main(){
using namespace std;
vector<int> nums;
while(true){
int n;
cin >> n;
if(0 == n)
break;
nums.push_back(n);
}
sort(nums.begin(), nums.end(), greater<int>());
copy(nums.begin(), nums.end(), ostream_iterator<int>(cout, "\n"));
}

You might also like