elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Problema en ciclo infinito
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Problema en ciclo infinito  (Leído 2,824 veces)
Mario Olivera

Desconectado Desconectado

Mensajes: 108


Ser loco es pensar diferente.


Ver Perfil
[Solucionado] Problema en ciclo infinito
« 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
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. class Potencia
  6. {
  7. public:
  8. void imprimePotencia()
  9. {
  10. int potencia= 2;
  11. while(true)
  12. {
  13. cout <<potencia <<endl;
  14. potencia*= potencia;
  15. }
  16.  
  17. }
  18. };
  19.  
  20. int main()
  21. {
  22. Potencia Potencia1;
  23. Potencia1.imprimePotencia();
  24. return 0;
  25. }


« Última modificación: 26 Julio 2014, 00:38 am por 718208 » En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Problema en ciclo infinito
« Respuesta #1 en: 26 Julio 2014, 00:07 am »

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

Código
  1. int potencia= 1;
  2. while(potencia < tope)
  3. {
  4.     cout << potencia << endl;
  5.     potencia *= 2;
  6. }

Saludos


« Última modificación: 26 Julio 2014, 00:11 am por Blaster » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema en ciclo infinito
« Respuesta #2 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
  1. void imprimePotencia(){
  2.    int potencia= 2;
  3.    while(true){
  4.        cout <<potencia <<endl;
  5.        potencia *=2;
  6.        cin.get();
  7.    }
  8. }
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema en ciclo infinito
« Respuesta #3 en: 26 Julio 2014, 00:25 am »

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
  1. int potencia= 1;
  2.    while(1)
  3.    {
  4.         cout << potencia << endl;
  5.         system("pause");//para verlos uno a uno y veras como al final salen ceros
  6.         potencia *= 2;
  7.    }

para ver los resultados poco a poco.

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


En línea

Mario Olivera

Desconectado Desconectado

Mensajes: 108


Ser loco es pensar diferente.


Ver Perfil
Re: Problema en ciclo infinito
« Respuesta #4 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
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema en ciclo infinito
« Respuesta #5 en: 26 Julio 2014, 05:10 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! ..... !!!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines