Professional Documents
Culture Documents
Reseni Zadaci OOP C++ 4
Reseni Zadaci OOP C++ 4
ispit
9. svibanj 2006.
1. (30 bodova)
Napišite template klasu point i potrebne operatore tako da sljedeći program
#include <iostream>
int main(){
point<int> p1(2,3), p2(3,4);
std::cout << "udaljenost tocaka " << p1 << " i " << p2 << " je " << p1 - p2 << std::endl;
}
2. (35 bodova)
Napišite interface idict koji sadrži funkciju translate (prima riječ na engleskom, vraća riječ na hrvatskom).
Napišite klasu dict koja implementira taj interface koristeći standardnu mapu. U slučaju da u mapi ne postoji tražena riječ
funkcija translate baca iznimku tipa string (upravo riječ koja nije pronađena).
Napišite program u kojem se učita jedan string i pokuša prevesti pomoću rječnika. Program mora ispisati prijevod riječi ili poruku
da tražena riječ ne postoji.
3. (35 bodova)
U datoteci border.txt su koordinate granice Republike Hrvatske (u svakom redu je geografska dužina i širina jedne točke). Napišite
program koji koristeći samo standardne algoritme
- učita koordinate u vektor koordinata
- izbaci sve invalidne koordinate (negativna širina ili dužina)
- ispiše najjužniju i najsjeverniju geografsku širinu
Objektno orijentirano programiranje
rješenja ispita
9. svibanj 2006.
1.
#include <cmath> // sqrt
2.
#include <string>
#include <map>
#include <iostream>
class idict {
public:
virtual std::string translate(std::string word) = 0;
virtual ~idict() = 0;
};
idict::~idict() {}
int main(){
try {
dict d;
std::string s; std::cin >> s;
std::cout << "prijevod: " << d.translate(s);
}catch(std::string& s){
std::cout << "ne postoji rijec: " << s << std::endl;
}
}
3.
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
#include <algorithm>
struct coord {
double lon, lat;
};
int main(){
using namespace std;
ifstream in("border.txt");
istream_iterator<coord> is(in), es;
std::vector<coord> c; copy(is, es, back_inserter(c));
std::vector<coord>::iterator it = remove_if(c.begin(), c.end(), rem);
c.erase(it, c.end());
it = max_element(c.begin(), c.end());
if(it != c.end()) std::cout << "sjever: " << it->lat << endl;
it = min_element(c.begin(), c.end());
if(it != c.end()) std::cout << "jug: " << it->lat << endl;
}