Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/05/2014, 22:17
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 5 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. }