El valor de una variable no se restablece al reiniciar un bloque "while"

Respondida El valor de una variable no se restablece al reiniciar un bloque "while"

  • jueves, 01 de diciembre de 2011 21:21
     
      Tiene código

    Buenas noches, estoy desarrollando un programa en C++ cuyo código es el siguiente:

    for (int c = 0; c < numero_filas; c++)
    	{
    		int x = 0;
    		int aux1 = 0;
    		while (x < numero_filas)  // Comienza con "aux1=0"
    		{
    			cout << aux1;
    			while (aux1 <= c)
    			{
    				aux1++;
    			}
    			x++;
    		}
    		cout << endl;
    	}
    
    Atendiendo al código, el bloque while comienza a imprimir la variable aux1 con valor igual a cero pero ascendiente en las siguientes repeticiones de while pero, cuando el bloque while se reinicia nuevamente tras pasar a otra fase (repetición) del bloque for, la variable aux1 mantiene el mismo valor que en la última fase de la anterior sesión del while cuando dicha variable debería de haber vuelto a cero.

    Un cordial saludo.

    Atentamente, Ángel Manuel.


    Ángel Manuel

    Blog Twitter

Todas las respuestas

  • lunes, 05 de diciembre de 2011 2:39
    Moderador
     
     Respondida
    El comportamiento que usted describe es el correcto.  ¿Por qué?  Porque la variable aux1 es destruida en cada iteración del for() exterior y reconstruida nuevamente con un valor inicial de cero.  ¿No quiere que esta destrucción/construcción suceda?  Simple:  Declare aux1 fuera del for().
    Jose R. MCP
  • lunes, 05 de diciembre de 2011 10:41
     
     Respondida Tiene código

    Buenos días, estaba todo correcto pues el problema se daba en que no salía la salida que yo esperaba pues tenía todo "mal programado" a consecuencia de este bloque, esperando yo que en las siguientes filas se imprimiese de cero a uno y así consecutivamente y no, imprimiéndose 0 hasta lo que salía al acabar el while en función de c, procedente del for.y así:

     

    while (aux1 <= c)
    			{
    				aux1++;
    			}

     


    Gracias por su ayuda.

    Saludos.


    Ángel Manuel

    Blog Twitter