C program to decimal to octal number

C program to decimal to octal number

In this example, you will learn to write the C program to decimal to octal numbers. Here we write a program that takes a decimal number as input and converts it into an equivalent octal number. Converting a decimal number to an octal means converting the number with base value 10 to base value 8.

The base value of a number system determines the number of digits used to represent a numeric value. For example, the binary number system uses two digits 0 and 1, the octal number system uses 8 digits from 0-7 and the decimal number system uses 10 digits 0-9 to represent any numeric value.

 

Examples:

Decimal number Input: 10
Octal number Output:  12


Decimal number Input: 9
Octal number Output:  11

 

Logic to convert decimal to octal number:

1. Ask the user to enter the decimal number.

2. Now perform modulo division on the number by 8 and store the remainder in an array.

//Modulo division decimal number by 8

octalNum[i] = num % 8;

3. Now Divide the number by 8.

//Divide the decimal number by 8

num = num / 8; 

4. Repeat steps 2 and 3 until the number is greater than zero.

5. In the last we will print the array in reverse order.

 

Example 1: C Program to Convert Decimal to Octal

 

#include <stdio.h>

#define CHAR_SIZE   8
#define ARRAY_SIZE sizeof(int)* CHAR_SIZE

int main()
{
    int i = 0,j =0;
    //num for decimal number
    long long num = 0;

    //Array to store octal number
    int octalNum[ARRAY_SIZE];

    printf("Enter decimal number: ");
    scanf("%lld", &num);
    while (num > 0)
    {
        octalNum[i] = (num % 8);
        num = (num / 8);
        i++;
    }

    // printing octal array in reverse order
    for (j = i - 1; j >= 0; j--)
    {
        printf("%d",octalNum[j]);
    }

    return 0;
}

Output:

Enter a decimal number: 10
12

 

Code Analysis,

Suppose num is 10.

Step 1: Remainder, when 10 is divided by 8, is 2. Therefore, octalNum[0] = 2.
Step 2: Divide 10 by 8. The new number is 10/8= 1.
Step 3: Remainder, when 1 is divided by 8, is 1. Therefore, binaryNum[1] = 1.
Step 4: Divide 1 by 8. New number is 1/8 = 0.
Step 5: Since the number becomes = 0. Print the octal array in reverse order. Therefore the equivalent binary number is 12.

 

Example 2: Second way to convert decimal to octal without an array:

We can also convert decimal to octal numbers without using an array. So let’s see the approach,

1. Initialize the variables octalNum to 0 and countVal to 1.

2. Ask the user to enter the decimal number.

3. Find the remainder when the decimal number is divided by 8.

//find the remainder of the entered decimal number

remainder = num % 8;

4. Update octal number by octalNum + (remainder * countVal )

// storing the octalvalue


octalNum  = (octalNum + (remainder * countVal ));

5. Increase countVal by countVal *10.

//storing exponential value
        
countVal = countVal * 10;

6. Divide the decimal number by 8.

//Divide the num by 8

num = num/8;

7. Repeat the second step until the decimal number is zero.

 

See the below code to convert decimal numbers to octal numbers in C without using the array.

#include <stdio.h>

//typedef to avoid long name
typedef unsigned long long ULLINT;

// function to calculate the octal value of the given
// decimal number
ULLINT decimaltoOctal(ULLINT num)
{
    ULLINT octalNum = 0, countval = 1;
    int remainder = 0;

    while (num != 0)
    {
        // decimals remainder is calculated
        remainder = num % 8;

        // storing the octal value
        octalNum += remainder * countval;

        // storing exponential value
        countval = countval * 10;
        num /= 8;
    }
    return octalNum;
}


int main()
{
    //store decimal number
    ULLINT num = 0;

    //store octal number
    ULLINT octalNum = 0;

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

    //Function Call
    octalNum = decimaltoOctal(num);

    printf("%lld",octalNum);

    return 0;
}

Output:

Enter a decimal number: 74
112

 

Example 3: Third way using the math library function

We can also convert decimals to octal using the pow library function declared in math.h header file. Let’s see the code.
#include <stdio.h>
//typedef to avoid long name
typedef unsigned long long ULLINT;

// Function to return the octal
// equivalent of decimal value num
ULLINT decimalToOctal(ULLINT num)
{
    // To store the octal number
    ULLINT binNum = 0;
    int cnt = 0;
    while (num != 0)
    {
        int rem = num % 8;
        ULLINT c = pow(10, cnt);
        binNum += rem * c;
        num /= 8;
        // Count used to store exponent value
        cnt++;
    }
    return binNum;
}
int main()
{
    //num for decimal number
    ULLINT num;
    printf("Enter decimal number: ");
    scanf("%lld", &num);

    //Called function
    printf("%lld",decimalToOctal(num));

    return 0;
}

Output:

Enter a decimal number: 74
112

 

Recommended Posts for you