Y que pasaría si tuviera que incluir el tipo de dato char tambié. Como tendria que implementar esa parte??
gracias
Bueno, si es necesario usar caracteres... El número lo puedes leer como double o float y luego hacer la conversión a char. Si lo has leído en f, por ejemplo, (char) f te devolvería la parte entera de f como carácter. Cuando haces la conversión, te queda la parte entera del float únicamente y no tienes que utilizar la función trunc. De todas formas, te aviso de que el rango de un char no va de -32768 a 32767, sino de 0 a 255 o de -128 a 127 (dependiendo de si lo consideras sin o con signo). Estas consideraciones sobre el rango del tipo char, en teoría, varían en función de la máquina y del compilador, pero en la práctica se cumplen en la mayoría de (por no decir todos) los casos. Así que si estas pensando en rangos mayores, no puedes usar char de esta forma.
Otra planteamiento: puedes leer de la entrada guardando los datos como cadena de caracteres y luego mirar si hay un punto. En caso afirmativo, es un float, y si no, es un int. O mejor, puedes ir leyendo carácter a carácter, comprobando si algún carácter es un punto (y si alguno lo es, cancelas la lectura e imprimes un mensaje diciendo que es un float). Si no te encuentras con ningún punto y llegas a un separador, cancelas la lectura y dices que es un int.
Saludos