Hola...Pregunta ¿Por qué al ejecutar este código imprime solo ceros?.
#include <stdio.h>
int main(){
int dos = 1,n;
printf( "Introduzca -1 para comenzar: ");
scanf( "%d", &n );
if ( n == -1 ){
while ( n == -1 ){
dos *= 2;
printf( "%d\n", dos );
}
}
return 0;
}
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.
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
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
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.
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.
Cita de: 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.
Error, no imprime los multiplos de 2, solo imprime sus potencias
No dije eso ? :¬¬
Sorry xD dislexia jejeje tienes razón
Cita de: engel lex en 25 Agosto 2015, 06:16 AM
Error, no imprime los multiplos de 2, solo imprime sus potencias
Una potencia por definición es multiplo de la base.
Cita de: furciorifa en 25 Agosto 2015, 07:15 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 2
x 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
Cita de: engel lex en 25 Agosto 2015, 07:34 AMson 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 {2
n | 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!
Cita de: 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
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