Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Mario Olivera en 25 Julio 2014, 23:29 PM

Título: [Solucionado] Problema en ciclo infinito
Publicado por: Mario Olivera 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... 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;
}
Título: Re: Problema en ciclo infinito
Publicado por: Blaster en 26 Julio 2014, 00:07 AM
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
Título: Re: Problema en ciclo infinito
Publicado por: ivancea96 en 26 Julio 2014, 00:09 AM
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();
   }
}
Título: Re: Problema en ciclo infinito
Publicado por: leosansan en 26 Julio 2014, 00:25 AM
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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Título: Re: Problema en ciclo infinito
Publicado por: Mario Olivera 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
Título: Re: Problema en ciclo infinito
Publicado por: leosansan en 26 Julio 2014, 05:10 AM
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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)