Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Reconocer el tipo de una Variable ingresada en tiempo de ejecución

Estas en el tema de Reconocer el tipo de una Variable ingresada en tiempo de ejecución en el foro de C/C++ en Foros del Web. Holas: Como se podría leer una variable que no se sabe de que tipo sera?. Y como se podría reconocer de que tipo de esa ...
  #1 (permalink)  
Antiguo 18/01/2010, 14:52
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Reconocer el tipo de una Variable ingresada en tiempo de ejecución

Holas:

Como se podría leer una variable que no se sabe de que tipo sera?.

Y como se podría reconocer de que tipo de esa variable ingresada por tclado, para darle el uso respectivo.
Se me ocurrió por el tamaño de la variable, si es d tamaño 4 bytes seria INT, si es de 1 byte sería CHAR, pero luego de reconocer el tamaño como le asignaría el tipo, ¿casteandolo?.


Algunas ideas seria de utilidad general.

Gracias
  #2 (permalink)  
Antiguo 19/01/2010, 04:38
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Reconocer el tipo de una Variable ingresada en tiempo de ejecución

Por teclado son todos CARACTERES ASCII, si queres determinar si es un numero valido podes comprobar cada caracter de la cadena con isdigit por ejemplo.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 21/01/2010, 07:42
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Reconocer el tipo de una Variable ingresada en tiempo de ejecución

Es una buena opcion , pero el dato lo tndria q ingresar como un string no?,,,,por ahi escuche que para mi problema, podria ingresar un dato recibiendolo ocmo tipo void* (puntero void) ...eso seria posible?...q estaria almacenando en mi variable "x", si hago esto:

void* x;
cin>>x;

hice la prueba pero no stoy segura d lo q estoy recibiendo en "x".
  #4 (permalink)  
Antiguo 21/01/2010, 08:40
 
Fecha de Ingreso: enero-2010
Mensajes: 24
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Reconocer el tipo de una Variable ingresada en tiempo de ejecución

Son dos temas distintos.

Por un lado tienes la introduccion de parametros por teclado, que la capturarias como cadena (manera mas facil), luego si quieres puedes convertirla a numerica (si son todos numeros) con atoi o atol.

Por otro lado esta trabajar con variables de tipo "indefinido" (pudes declararlas como indefinidas, pero necesitas conocer alguna manera para detectar de que tipo son):

Código C:
Ver original
  1. void Imprime (int tipo, void *var)
  2. {
  3.   int *aux_int;
  4.   char *aux_char;
  5.  
  6.   if (tipo == 1)
  7.   {
  8.     aux_char = var;
  9.     fprintf (stderr, "Variable texto [%s]\n", aux_char);
  10.   }
  11.   else
  12.   {
  13.     aux_int = var;
  14.     fprintf (stderr, "Variable numero [%d]\n", *aux_int);
  15.   }
  16. }
  17.  
  18.  
  19. int main(int argc, char *argv[])
  20. {
  21.   char var_texto[10];
  22.   int var_numero;
  23.  
  24.   strcpy (var_texto, "hola");
  25.   var_numero = 5;
  26.  
  27.   Imprime (1, var_texto);  
  28.   Imprime (2, &var_numero);
  29.  
  30.   return 0;
  31. }
  #5 (permalink)  
Antiguo 21/01/2010, 09:53
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Reconocer el tipo de una Variable ingresada en tiempo de ejecución

eling: Un puntero, pero da lo mismo, el que lo escriba lo hara en caracteres, despues hay una conversion. Lo que vos tenes que hacer es leer esos caracteres, que forman una cadena (string).

Pueden escribir HOLA y el tamaño de la cadena sera 4, eso no es un int. Aunque ABCD si puede ser un numero en hex ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 21/01/2010 a las 10:02

Etiquetas: reconocer, tipo, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.