Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Necrosisdezer en 8 Septiembre 2016, 23:32 pm



Título: Ayuda en c con paso de procedimiento [?]
Publicado por: Necrosisdezer en 8 Septiembre 2016, 23:32 pm
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
Código:
#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;
}



Título: Re: Ayuda en c con paso de procedimiento [?]
Publicado por: Necrosisdezer en 8 Septiembre 2016, 23:38 pm
Código
  1.  
Código
  1. [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
Código:
#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;
}



Título: Re: Ayuda en c con paso de procedimiento [?]
Publicado por: ivancea96 en 8 Septiembre 2016, 23:57 pm
Código
  1. if(num<=1)
  2.   num=num-0/2;
  3.  else
  4.   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.


Título: Re: Ayuda en c con paso de procedimiento [?]
Publicado por: Necrosisdezer en 9 Septiembre 2016, 00:02 am
a perdon me equivoque de codigo

Código:
#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;
}



Título: Re: Ayuda en c con paso de procedimiento [?]
Publicado por: ivancea96 en 9 Septiembre 2016, 00:09 am
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.