-
help
This program suppose to change a number to binary format.
but somehow it's printing infite 0s.
/* Program that utilizes simple functions to convert decimal numbers */
/* to binary and produces formatted output */
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
/* Declaration */
int m;
int binarynum = 0;
int binarynum2;
/* Ask User to Input numbers */
printf("Enter a number that you want to change in binary format ");
scanf("%d", &m);
/* Print Output for Binaryrep Function */
printf("\n");
printf("The binary format for interger %d is ", m);
/* Call Binaryrep Function */
while (binarynum != EOF)
{
binarynum2 = binaryrep(m);
/* Print result of Binaryrep Function */
printf("%d", binarynum2);
}
return 0;
}
/* Function Power */
int power(int j, int k)
{
/* Declaration */
int num2;
int result = 1;
num2 = k;
if(num2 == 0)
{
result=1;
return result;
}
else
{
for (num2 = 1; num2 <= k; ++num2)
{
result = result * j;
}
return result;
}
}
/* Function Binaryrep */
int binaryrep(int i)
{
int FirstPower = 15;
int num6;
/* Convert interger to binary format */
while (FirstPower >= 0)
{
num6 = power ( 2, FirstPower);
if (num6 <= i)
{
return 1;
i = i - num6;
}
else
{
return 0;
}
FirstPower = FirstPower -1;
}
}
-
The reason why it goes wrong is this loop:
/* Call Binaryrep Function */
while (binarynum != EOF)
{
binarynum2 = binaryrep(m);
/* Print result of Binaryrep Function */
printf("%d", binarynum2);
}
The variable binarynum is set to a value which is not equal to EOF. So (binarynum != EOF) == TRUE. The loop ends when (binarynum == EOF) == TRUE. In your loop, the value of binarynum is never changed. So binarynum will never be equal to EOF and the loop will never end.
Popular pages
Recent additions