Programa "Multiplos de 2"

Iniciado por Sherboc, 21 Agosto 2015, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Sherboc


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. 

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

furciorifa

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.

Mientras

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.



engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Mientras


engel lex

Sorry xD dislexia jejeje tienes razón
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

furciorifa

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.

engel lex

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 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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

do-while

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 {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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!