C++ Program to Convert Decimal to Octal

In this article, you will learn and get code on decimal to octal conversion in C++. The program is created with and without using the modulo operator. Also, with and without the use of a user-defined function.

But before going through the program, if you are not aware of the steps and logic used behind the conversion, refer to Decimal to Octal.

Decimal to Octal in C++

To convert a decimal number to an octal number in C++ programming, you have to ask the user to enter the decimal number first. and then convert it into its equivalent octal value as shown in the program given below:

#include<iostream>
using namespace std;
int main()
{
    int decimalNum, octalNum[50], i=0;
    cout<<"Enter any Decimal number: ";
    cin>>decimalNum;
    while(decimalNum != 0)
    {
        octalNum[i] = decimalNum%8;
        i++;
        decimalNum = decimalNum/8;
    }
    cout<<"\nEquivalent Octal Value = ";
    for(i=(i-1); i>=0; i--)
        cout<<octalNum[i];
    cout<<endl;
    return 0;
}

This program was built and runs under the Code::BlocksĀ IDE. Here is its sample run:

C++ program convert decimal to octal

Now, enter any decimal number, such as 358, and press the ENTER key to see its equivalent octal value, as shown in the screenshot below:

decimal to octal c++

The following is a dry run of the above program with a decimal number input, say 358:

  • Initial value, i=0
  • When the user enters a decimal number, say 358, it gets stored in decimalNum.
  • Now the condition of the while loop gets evaluated. That is, the condition decimalNum!=0 or 358!=0 evaluates to be true, therefore program flow goes inside the loop.
  • There, decimalNum%8 or 358%8 or 6 gets initialized to octalNum[i] or octalNum[0]. Because, we divided the number 358 by 8, we got the remainder of 6.
  • The value of i gets incremented. So i=1
  • And decimalNum/8, 358/8, or 44 is set to decimalNum.
  • Now the program flow goes back and evaluates the condition of the while loop again with a new value of decimalNum.
  • Continue evaluating the condition of the while loop until it evaluates to false.
  • If we continue the process, we will obtain the following values:
    • octalNum[0]=6
    • octalNum[1]=4
    • octalNum[2]=5
  • Before the value of decimalNum becomes equal to 0, the value of i gets incremented. Furthermore, if the value of decimalNum is 0, the while loop condition evaluates to false. As a result, the while loop's evaluation is completed.
  • And we must print the value of octalNum[] from the last to the 0th index.
  • So, we used the for loop to print the value from i-1 to the 0th index of octalNum[].
  • In this way, 546 gets printed as the octal equivalent of the given decimal number 358.

Decimal to octal conversion in C++ without using the modulo operator

This program does not use the modulo operator (%) while converting a decimal number to octal.

#include<iostream>
using namespace std;
int main()
{
    int decimalNum, octalNum[50], i=0, temp, chk, rem;
    cout<<"Enter any Decimal number: ";
    cin>>decimalNum;
    while(decimalNum!=0)
    {
        temp = decimalNum/8;
        chk = temp*8;
        rem = decimalNum - chk;
        octalNum[i] = rem;
        i++;
        decimalNum = temp;
    }
    cout<<"\nEquivalent Octal Value = ";
    for(i=(i-1); i>=0; i--)
        cout<<octalNum[i];
    cout<<endl;
    return 0;
}

It will produce the same output as the previous program.

Decimal to octal conversion in C++ using a user-defined function

This is the last program that uses the user-defined function DecimalToOctal(). It takes a decimal number as its argument and converts it into its equivalent octal value.

#include<iostream>
using namespace std;
void DecimalToOctal(int);
int octalNum[50];
static int i;
int main()
{
    int decimalNum;
    cout<<"Enter any Decimal number: ";
    cin>>decimalNum;
    DecimalToOctal(decimalNum);
    cout<<"\nEquivalent Octal Value = ";
    for(i=(i-1); i>=0; i--)
        cout<<octalNum[i];
    cout<<endl;
    return 0;
}
void DecimalToOctal(int decimalNum)
{
    while(decimalNum != 0)
    {
        octalNum[i] = decimalNum%8;
        i++;
        decimalNum = decimalNum/8;
    }
}

This program has the same output as the first program in this article.

Note: A static int type variable initializes its initial value as 0, automatically.

The same program in different languages

C++ Quiz


« Previous Program Next Program »


Follow/Like Us on Facebook


Subscribe Us on YouTube