Ayuda en c con paso de procedimiento [?]

Iniciado por Necrosisdezer, 8 Septiembre 2016, 23:32 PM

0 Miembros y 2 Visitantes están viendo este tema.

Necrosisdezer

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;
}


Necrosisdezer

Código (html4strict) [Seleccionar]
Cita de: Necrosisdezer en  8 Septiembre 2016, 23:32 PM
Código (cpp) [Seleccionar]
[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;
}



ivancea96

Código (cpp) [Seleccionar]
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.

Necrosisdezer

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;
}


ivancea96

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.