[Solucionado] Problema en ciclo infinito

Iniciado por Mario Olivera, 25 Julio 2014, 23:29 PM

0 Miembros y 2 Visitantes están viendo este tema.

Mario Olivera

Hola gente, tengo que imprimir las potencias del entero 2, para eso uso un ciclo infinito: while (true) y siempre me imprime cero... sin embargo si le saco la intruccion potencia*=potencia me imprime 2, como tendría que ser.. quisiera saber porque ocurre esto, por las dudas dejo el código

Código (cpp) [Seleccionar]
#include <iostream>
using std::cout;
using std::endl;

class Potencia
{
public:
void imprimePotencia()
{
int potencia= 2;
while(true)
{
cout <<potencia <<endl;
potencia*= potencia;
}

}
};

int main()
{
Potencia Potencia1;
Potencia1.imprimePotencia();
return 0;
}

Blaster

#1
No puedes calcular la potencia de dos infinitamente, tiene que haber un tope:

Código (cpp) [Seleccionar]
int potencia= 1;
while(potencia < tope)
{
    cout << potencia << endl;
    potencia *= 2;
}


Saludos

ivancea96

No se imprime siempre cero. El problema, es que:
1) para potencias de 2, tendrías que poner potencia*=2. Sinó, no saldrán potencias de 2.
2) Pones un ciclo while infinito. Párate a mirar los valores 1 a 1 en vez de a lo basto. La variable alcanza el tope de int, y acaba siendo 0.

Aquí la función:

Código (cpp) [Seleccionar]
void imprimePotencia(){
   int potencia= 2;
   while(true){
       cout <<potencia <<endl;
       potencia *=2;
       cin.get();
   }
}

leosansan

Cita de: 718208 en 25 Julio 2014, 23:29 PM
Hola gente, tengo que imprimir las potencias del entero 2, para eso uso un ciclo infinito: while (true) y siempre me imprime cero...
....................................................

No siempre te imprime cero, lo que pasa es que sucede tan rápido que ni lo ves. Usa:

Código (cpp) [Seleccionar]
int potencia= 1;
    while(1)
    {
         cout << potencia << endl;
         system("pause");//para verlos uno a uno y veras como al final salen ceros
         potencia *= 2;
    }


para ver los resultados poco a poco.

¡¡¡¡ Saluditos! ..... !!!!



Mario Olivera

Gracias Blaster, ivancea96 y leosansan  ;-) solucionaron mi problema, aparte había puesto potencia*= potencia, cuando era potencia*=2

Saludos

leosansan

Cita de: 718208 en 26 Julio 2014, 00:37 AM
Gracias Blaster, ivancea96 y leosansan  ;-) solucionaron mi problema, aparte había puesto potencia*= potencia, cuando era potencia*=2

Saludos

¡¡¡ De nada ¡¡¡¡ ,  para eso nos "asomamos" por aquí.

¡¡¡¡ Saluditos! ..... !!!!