| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
m@o_614
Registrado: 13 Dic 2011 Mensajes: 19
| Publicado: 05/02/2012 9:53 am | | | Título: Función trunc |
| Tengo un programa al compilar mi programa que me pide que ingrese un dato y despues me tiene que regresar si es un int, float o char. Usando la función trunc, pero cuando le doy un caracter me marca un error
[code]#include <stdio.h> #include <stdlib.h> #include <math.h> //Este programa muestra los valores de los tipos de datos//
int main() { float dato; printf("Dame un dato\n"); scanf("%f",&dato); if(trunc(dato)-dato==0) printf("Es un tipo de dato int\nCon un rango de -32,768 a 32,767\n"); else if(trunc(dato)-dato!=0) printf("Es un tipo de dato float\nCon un rango de 3.4 E-38 a 3.4 E+38\n"); else printf("Es un tipo de dato char\nCon un rango de -128 a 127\n");
return 0; } [/code] |
|
| Volver arriba | |
 |
polly
Registrado: 19 Jul 2007 Mensajes: 602
| Publicado: 06/02/2012 7:09 am | | | Título: |
| ¿Qué error? 'trunc' es para datos de tipo 'double y tú estás usando floats. _________________ @enrmarc |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 6586 Ubicación: Mexico
| Publicado: 15/02/2012 9:14 am | | | Título: |
| No puedes utilizar la función scanf para ese propósito ya que si la entrada es 'J' no hay conversión y el valor de la variable "dato" se mantiene como no definido o "basura".
Para realizar esa operación primero debes verificar si es la representación valida de un entero utilizando "strtol" (prototipo en <stdlib.h>), continuas con la verificación caso de un numero de punto flotante utilizando "strtod" (prototipo en el mismo encabezado) y caso contrario asumes que es un carácter.
Un saludo _________________ Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short. -- Mentat Handbook |
|
| Volver arriba | |
 |
|
|