#include #include #include #include using namespace std; template const T& maximo(const vector &v) { int max = 0; for (int i=1; iv[max]) max=i; return v[max]; } class Dado { public: Dado(); Dado(int n_caras); bool operator> (const Dado & d) const; // Requerido por la platilla // otros métodos const Dado & operator=(const Dado&d); // no se pedía. // Es requerido por vector. // La asignación por omisión // no sirve por tener atributo // constante. friend ostream& operator<<(ostream &os, const Dado&d); // no se pedía private: const int numCaras; int valor; }; Dado::Dado() :numCaras(6) { valor=random()%6+1; // no importa para el problema } Dado::Dado(int n_caras) :numCaras(n_caras) { valor=random()%n_caras+1; // no importa para el problema } bool Dado::operator>(const Dado & d) const { return valor > d.valor; // no importa su criterio de comparación } const Dado & Dado::operator=(const Dado&d){ // no se pedía valor=d.valor>numCaras?numCaras:d.valor; return *this; } ostream & operator<<(ostream & os, const Dado&d){ // no se pedía os << d.valor; } int main (void) { srandom(time(NULL)); // semilla números aleatorios vector a; Dado d1(8); Dado d2, d3(10); a.push_back(d1); a.push_back(d2); a.push_back(d3); cout << maximo(a)<< endl; const Dado & d=maximo(a); cout << d << endl; }