Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Sherboc en 21 Agosto 2015, 20:23 pm



Título: Programa "Multiplos de 2"
Publicado por: Sherboc en 21 Agosto 2015, 20:23 pm

Hola...Pregunta ¿Por qué al ejecutar este código imprime solo ceros?.


Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. int dos = 1,n;
  6.  
  7. printf( "Introduzca -1 para comenzar: ");
  8. scanf( "%d", &n );
  9.  
  10. if ( n == -1 ){
  11.  
  12. while ( n == -1 ){
  13.  
  14.  dos *= 2;
  15.  
  16.  printf( "%d\n", dos );
  17.  
  18. }
  19.  
  20. }
  21.  
  22. return 0;
  23. }

Solo es un ejercicio que se tiene que imprimir los múltiplos de 2 pero en un "ciclo infinito" y quisiera saber porque solo imprime 0 :), saludos. 


Título: Re: Programa "Multiplos de 2"
Publicado por: engel lex en 21 Agosto 2015, 20:33 pm
ciclo infinito, desbordaste la variable en las primeras 32 rondas, la memoria volvió a 0 y 2*0 = 0

si lo guardas en un archivo o detienes la consola muy rapido verás

Código:
Introduzca -1 para comenzar: -1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
-2147483648
0
0
0
0
0


Título: Re: Programa "Multiplos de 2"
Publicado por: furciorifa en 25 Agosto 2015, 03:22 am
Efectivamente como dijo el moderador que es de los mejores programadores que conozco virtualmente, si hace tu ciclo, pero se desborda la capacidad del int e imprime 0.


Título: Re: Programa "Multiplos de 2"
Publicado por: Mientras en 25 Agosto 2015, 05:59 am
Eso imprime potencias de 2. Los múltiplos de 2 son 2,4,6,8,10,12..... .

*Eso si las potencias están incluidas en lo múltiplos.




Título: Re: Programa "Multiplos de 2"
Publicado por: engel lex en 25 Agosto 2015, 06:16 am
Eso imprime potencias de 2. Los múltiplos de 2 son 2,4,6,8,10,12..... .

*Eso si las potencias están incluidas en lo múltiplos.




Error, no imprime los multiplos de 2, solo imprime sus potencias


Título: Re: Programa "Multiplos de 2"
Publicado por: Mientras en 25 Agosto 2015, 06:42 am
No dije eso ?  :¬¬


Título: Re: Programa "Multiplos de 2"
Publicado por: engel lex en 25 Agosto 2015, 06:52 am
Sorry xD dislexia jejeje tienes razón


Título: Re: Programa "Multiplos de 2"
Publicado por: furciorifa en 25 Agosto 2015, 07:15 am
Error, no imprime los multiplos de 2, solo imprime sus potencias

Una potencia por definición es multiplo de la base.


Título: Re: Programa "Multiplos de 2"
Publicado por: engel lex en 25 Agosto 2015, 07:34 am
Una potencia por definición es multiplo de la base.

Claro, pero "las potencias de 2" no son "los multiplos de 2" sino son "algunos multiplos de 2", en nuestro idioma los primeros 2 textos implican la palabra "todas" son embargo en la teoria de numeros finitos el grupo compuesto por 2x es un subgrupo bastante pequeño del grupo 2x

 :P espero haya dado a entender mi punto que senti que pudo no haberse aclarado inicialmente


Título: Re: Programa "Multiplos de 2"
Publicado por: do-while en 25 Agosto 2015, 09:53 am
son embargo en la teoria de numeros finitos el grupo compuesto por 2x es un subgrupo bastante pequeño del grupo 2x

Un apunte técnico {n | n entero}, {2n | n entero} y {2n | n entero} tienen la misma cantidad de elementos. Y otro asunto, los dos primeros conjuntos ni siquiera son grupos multiplicativos, son grupos aditivos y el tercero no es grupo aditivo, es un grupo multiplicativo, así que no se puede decir que sea un subgrupo de ninguno de los dos conjuntos anteriores, ya que la operación con la que trabajan no es la misma.

Por lo demás todo correcto.

¡Saludos!


Título: Re: Programa "Multiplos de 2"
Publicado por: Sherboc en 28 Agosto 2015, 02:47 am
ciclo infinito, desbordaste la variable en las primeras 32 rondas, la memoria volvió a 0 y 2*0 = 0

si lo guardas en un archivo o detienes la consola muy rapido verás

Código:
Introduzca -1 para comenzar: -1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
-2147483648
0
0
0
0
0

Muchas gracias sr. moderador e.e (sin ofender), también yo sabia que esos no eran múltiplos de dos pero como así lo decía mi libro pues solo seguí la corriente xD SALUDOS