#include #include using namespace std; template T manji(T a, T b) { return a < b ? a : b; } char* manji(char* a, char* b) { if (strcmp(a, b) < 0) return a; else return b; } template class Par { public: Par(T a, T b) :_prvi(a), _drugi(b) {} void pisi(ostream &izlaz) const { izlaz << "(" << _prvi << ", " << _drugi << ")"; } private: T _prvi; T _drugi; }; template ostream& operator<< (ostream &izlaz, const Par& p) { p.pisi(izlaz); return izlaz; } int main() { int x1 = 1, y1 = 4; cout << manji(x1, y1) << endl; double x2 = 1.9, y2 = 4.2; cout << manji(x2, y2) << endl; char c1 = 'a', c2 = 'b'; cout << manji(c1, c2) << endl; cout << manji(2.1, 3) << endl; /* char *s = "mirko"; char *t = "spasic"; cout << manji(s, t) << endl; */ Par p(1,2); cout << "p = " << p << endl; Par p1(3,4); cout << "p1 = " << p1 << endl; Par p2(1.1,2.2); cout << "p2 = " << p2 << endl; Par< Par > p3(p, p1); cout << "p3 = " << p3 << endl; return 0; }