About Me

My photo
Raipur, Chhattisgarh, India
Hi , I am Amit Thakur. I have worked as a QA Engineer for two years and as a Java Developer for one year in NIHILENT TECHNOLOGIES PVT. LTD., Pune.Currently I am working as DEAN (Research & Development) in Bhilai Institute of Technology, Raipur.

Tuesday, September 3, 2013

C Program to Convert Decimal number to Octal Number

Logic of This Program :

In this program we are accepting the decimal number from the user and decimal number is converted into the equivalent octal number with simple steps -

Steps to Convert Decimal to Octal :

  1. Accept the given decimal number
  2. If the number is less than 8 the octal number is the same
  3. If the num > 7 then Divide the number with 8
  4. Write down the remainder
  5. Do steps 3 and 4 with the quotient till that quotient is less than 8
  6. Write the remainders in reverse order (bottom to top)
  7. The resultant is the equivalent octal number to the given decimal number

#include<stdio.h>
#include<conio.h>
#include<math.h>

void dec_oct(long int num)   // Function Definition
{
long int rem[50],i=0,length=0;
while(num>0)
 {
 rem[i]=num%8;
 num=num/8;
 i++;
 length++;
 }
printf("nOctal number : ");
     for(i=length-1;i>=0;i--)
             printf("%ld",rem[i]);
}
//================================================
void main()
{
long int num;
clrscr();

 printf("Enter the decimal number : ");
 scanf("%ld",&num);

    dec_oct(num);   // Calling function

 getch();
}
Output :
Enter the decimal number : 20
Octal number : 24

Explanation of C Program :

We are dividing the number by 8 and storing the reminder in the rem[] array.
while(num>0)
{
   rem[i]=num%8;
   num=num/8;
   i++;
   length++;
}
Original number is then divided by 8 and
num = num / 8;
We are repeating the steps until ‘num’ is greater than 0.
while(num>0)
 {
 --- Logic of
 ---    the Code
 }
Now we are printing the reminders stored in an array in reverse order so that equivalent octal number gets printed.
for(i = length-1 ; i >= 0 ; i--)
      printf("%ld",rem[i]);

No comments: