/* 
Ejercicio 6
Escriba una plantilla de función llamada maximo() que devuelva  
el valor máximo de tres argumentos que se transmitan a la función  
cuando sea llamada.
Suponga que los tres argumentos serán del mismo tipo de datos.
*/

#include<iostream>
#include<conio.h>

using namespace std;

// Prototipo de función
template <class TIPOD>
TIPOD maximo(TIPOD dat1, TIPOD dat2, TIPOD dat3);

void pedirDatos();

// Variables globales
float dat1, dat2, dat3; // int, float, double, etc...

int main(){

    pedirDatos();
    cout << "\nEl dato mayor es: " << maximo(dat1, dat2, dat3);

    getch();
    return 0;
}

void pedirDatos(){
    cout << "Digite el valor del dato 1: "; cin >> dat1;
    cout << "Digite el valor del dato 2: "; cin >> dat2;
    cout << "Digite el valor del dato 3: "; cin >> dat3;
}

template <class TIPOD>
TIPOD maximo(TIPOD dat1, TIPOD dat2, TIPOD dat3){
    TIPOD datMaximo;

    if(dat1 >= dat2 && dat1 >= dat3){
        datMaximo = dat1;
    } else {
        if(dat2 >= dat1 && dat2 >= dat3){
            datMaximo = dat2;
        } else {
            datMaximo = dat3;
        }
    }

    return datMaximo;
}
Digite el valor del dato 1: 10.001
Digite el valor del dato 2: 10.231
Digite el valor del dato 3: 10.012
El dato mayor es: 10.231
--------------------------------
Process exited after 46.29 seconds with return value 0
Presione una tecla para continuar . . .