Hola necesito ayuda con este programa el cual la función es que pida un numero y ese lo divida en entre 2 asta que el valor ya no se puede dividir y imprima los residuos usando el ciclo while pero al copilarlo y ejecutarlo me marca puro 1 y 0 de forma continua sin interrumpir
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
void division(int num)
{
int resi;
while(num!=0){
resi=num%2;
printf("%d",resi);
if(num<=1)
num=num-0/2;
else
num=num/2;
}
}
int main()
{
int num;
printf("Introduce un numero: ");
scanf("%d",&num);
division(num);
return 0;
}
Cita de: Necrosisdezer en 8 Septiembre 2016, 23:32 PM
[code=c]
[/code]Hola necesito ayuda con este programa el cual la función es que pida un numero y ese lo divida en entre 2 asta que el valor ya no se puede dividir y imprima los residuos usando el ciclo while pero al copilarlo y ejecutarlo me marca puro 1 y 0 de forma continua sin interrumpir
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
void division(int num)
{
int resi;
while(num!=0){
resi=num%2;
printf("%d",resi);
if(num<=1)
num=num-0/2;
else
num=num/2;
}
}
int main()
{
int num;
printf("Introduce un numero: ");
scanf("%d",&num);
division(num);
return 0;
}
if(num<=1)
num=num-0/2;
else
num=num/2;
En primer lugar,, lo de num = num-0/2 es como poner num = num, que es como no hacer nada.
Por tanto, cuando num sea 1,no hará nada, y se quedará en bucle infinito.
a perdon me equivoque de codigo
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
void division(int num)
{
int resi;
while(num>=0){
resi=num%2;
printf("%d",resi);
if(num==1)
num=num-1/2;
else
num=num/2;
}
}
int main()
{
int num;
printf("Introduce un numero: ");
scanf("%d",&num);
division(num);
return 0;
}
Es lo mismo. 0/2 y 1/2 son ambos 0. Es una división entera sin decimales, y se redondea hacia abajo.
Poner == en vez de <= no arregla tampoco el problema, ya que si fuera 0, lo divides entre 2, que da 0 de nuevo.