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

Inquietud con contenido de variables

Estas en el tema de Inquietud con contenido de variables en el foro de C/C++ en Foros del Web. Hola a todos quisiera saber si hay alguna forma de saber si una variable tiene un valor dentro, o esta "vacia"(tiene basura), seria para decir ...
  #1 (permalink)  
Antiguo 10/05/2014, 11:43
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Inquietud con contenido de variables

Hola a todos quisiera saber si hay alguna forma de saber si una variable tiene un valor dentro, o esta "vacia"(tiene basura), seria para decir por ejemplo:

Código C++:
Ver original
  1. int x;
  2. if(x==vacia){break;}else{x++;}

Última edición por shikamarucb; 10/05/2014 a las 11:44 Razón: cod incompleto
  #2 (permalink)  
Antiguo 10/05/2014, 12:07
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Inquietud con contenido de variables

yo creo que no por que no vas a saber el tipo de datos que tenia antes, así que tenga lo que tenga no sabes si es un char o un int o un string entre otros.
Tener si va a tener, ni que sea un null pero algo tiene. XD
A ver si alguien sabe como XD
  #3 (permalink)  
Antiguo 10/05/2014, 12:49
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Inquietud con contenido de variables

Si las variables son globales, parten en 0. En otros casos hay basura.

Tal vez si indicas en qué caso específico requieres conocer esto, obtendrías sugerencias de como lograrlo.
__________________
Visita mi perfil en LinkedIn
  #4 (permalink)  
Antiguo 10/05/2014, 18:31
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Inquietud con contenido de variables

Ps mas o menos lo necesitaria para el valor de un arreglo, por ejemplo que cuando el arreglo en las dimensiones i j ya tienen un valor pues que se salga del ciclo

Código C++:
Ver original
  1. if(matriz[i][j]==llena){break;}
Cita:
Iniciado por CalgaryCorpus Ver Mensaje
Si las variables son globales, parten en 0. En otros casos hay basura.

Tal vez si indicas en qué caso específico requieres conocer esto, obtendrías sugerencias de como lograrlo.
  #5 (permalink)  
Antiguo 10/05/2014, 18:44
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Inquietud con contenido de variables

Lo que puedes hacer es asignar un dato nulo y cuando tenga algo que no sea el nulo pues usas el break;¿No te sirve?
  #6 (permalink)  
Antiguo 10/05/2014, 20:24
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Inquietud con contenido de variables

Esta bien. Pero no se como hacerlo, ¿como lo hago?
Cita:
Iniciado por vangodp Ver Mensaje
Lo que puedes hacer es asignar un dato nulo y cuando tenga algo que no sea el nulo pues usas el break;¿No te sirve?
  #7 (permalink)  
Antiguo 10/05/2014, 22:17
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Inquietud con contenido de variables

pues metendo un 0 cuando creas la variable.

int num = 0;

si es un char pues

char letra = ''\0'';

luego a la hora de comparar es lo mismo comparas la letra o numero con el nulo.

si es numero:

if ( numero != 0 ){break;} //Si numero es diferente a 0 usamos el break

para char:

if ( letra != '\0' ){break;} //Si letra es diferente de '\0' usamos break

Si inicialisas las variables todas a nul sabes lo que hay en cada momento por que las has dado valor tu todas a 0 y si tienen algo que no sea 0 haces lo que quieras =)

para las tablas puedes usar una funcion llamada memset() http://www.cplusplus.com/reference/cstring/memset/

ahí veras que memset() sustituye 6 primeras letras de la frase: "almost every programmer should know memset!" por el carácter '-', pero puedes usar para sustituir toda la cadena por nulos. Eso se hace cambiando el '-' por '\0' y poniendo en vez de solo 6 letras poner el tamaño de la frase completa, si es char toda la cadena -1 qe es el nulo del final.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <cstdio>
  4. using namespace std;
  5.  
  6. int main (){
  7.     system("MODE CON cols=100 lines=50");
  8.     //Eso ocupa 25 chars incluyendo espacios y un nulo que pone de forma no trasparente al usuario
  9.     //para indicar donde termina el texto en la memoria.En realidad Esto "la sopa esta en la mesa!" En
  10.     //la memoria esta así "la sopa esta en la mesa!\0" El barra cero es el carácter nulo y indica que se lea hasta el carácter anterior.
  11.     char texto[] = "la sopa esta en la mesa!";
  12.    
  13.     cout << texto << endl;
  14.    
  15.     cout << "\nEl tamaño del texto incluyendo todos los espacios es: " << sizeof(texto) << endl;
  16.    
  17.     //El menos uno es para marcar el nulo de fin de la cadena por que pongo 24 letras X, el ultimo es nulo no se debe tocar.
  18.     //Si toda la cadena es diferente a nula o sea 24 letras debo dejar la ultima sin tocar por que ahi se guarda un nulo que indica el fin de la cadena.
  19.     //Si usamos los 25 huecos de la cadena de 25 el programa puede poner el nulo en el gueco 26 y eso estaria fuera de rango
  20.     //Regla de oro, por precaución el ultimo carácter de una cadena de chars no se toca ;)
  21.     memset( texto, 'X', sizeof(texto)-1 );//24'X' + 1'\0' nulo o sea 25chars... recuerda no tocar el ultimo nunca o te puedes salir de rango.
  22.    
  23.     cout << texto << endl;
  24.    
  25.     cout << int( texto[24] ) << "Como ves cero en la tabla asc2 es nulo, no lo ves pero esta ahi y no lo debes tocar";
  26.    
  27.     //Si creas una tabla de chars de 10 guacos nunca debes usar el ultimo por lo que explique antes
  28.     //Por otro lado si la tabla es de enteros no tiene ese problema y puedes usar los 10 huecos, es solo en el caso de char
  29.     //que no se puede usar el ultimo hueco ;)
  30.    
  31.    
  32.    
  33.    
  34.     cin.ignore();
  35.     return 0;
  36. }
  #8 (permalink)  
Antiguo 11/05/2014, 07:13
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Inquietud con contenido de variables

Yo creo que una manera es contar la cantidad de caracteres que tiene la variable, si devuelve 0 es porque no tiene nada dentro de ella, pero si existe la variable, porque si no existiera, daría error.

En Python existe la función type() para saber si una variable es int, string, tupla, lista, etc.

Ejemplo:

print type(Cancion)
devuelve: str

print type(anios)
devuelve: int

Quizás en C++ exista algo similar o lo mismo, esas funciones ayudan mucho y son muy buenas!!
  #9 (permalink)  
Antiguo 11/05/2014, 11:37
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Inquietud con contenido de variables

Eso si... si es una tabla tiene que contar todas las posiciones de la tabla XD, aun que no se las funciones que dices si las hay en c++.Parecen interesantes, hay las funciones isanum, isalpha...

Etiquetas: contenido, int, 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 09:32.