La prima che hai detto. Solo non capisco una cosa: dovrei creare una funzione per ogni tipo possibile (char, int, float etc)? E come faccio a capire con che tipo sto lavorando?

EDIT: Se può essere d'aiuto qui c'è il link all'esercizio con la possibilità di scaricare il codice con commenti in doxygen

link