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 modulo operator. And also with and without using user-defined function.

But before going through the program, if you are not aware about the steps and logic used behind the conversion, then refer to decimal to octal.

Decimal to Octal in C++

To convert decimal number to octal number in C++ programming, you have to ask from 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 build and run under Code::Blocks IDE. Here is its sample run:

C++ program convert decimal to octal

Now input any decimal number say 358 and press ENTER key to see its equivalent octal value as shown in the snapshot given below:

decimal to octal c++

The dry run of above program with decimal number input say 358 goes like:

  • Initial value, i=0
  • When user enters decimal number say 358, it gets stored in decimalNum
  • Now the condition of 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, while dividing the number 358 by 8, we'll get the remainder 6
  • The value of i gets incremented. So i=1
  • And decimalNum/8 or 358/8 or 44 gets initialized to decimalNum
  • Now program flow goes back and evaluates the condition of while loop again with new value of decimalNum
  • Continue the process of evaluating while loop, until its condition evaluates to be false
  • On continuing the process, we'll get the values as:
    • octalNum[0]=6
    • octalNum[1]=4
    • octalNum[2]=5
  • Before the value of decimalNum becomes equal to 0, the value of i gets incremented. And because, if the value of decimalNum is 0, then the condition of while loop evaluates to be false. Therefore the evaluation of while loop gets ended
  • And we've to print the value of octalNum[] from its last to 0th index.
  • So using for loop, we've printed the value, starting from i-1 to 0th index of octalNum[]
  • In this way, 546 gets printed as octal equivalent of given decimal number 358

Without using Modulo Operator

This program does not use % (modulo operator) while converting 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 of previous program.

Using user-defined Function

This is the last program that uses a user-defined function DecimalToOctal(). It takes a decimal number as its argument and convert 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;
    }
}

Produces the same output as of very first program of this article.

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

Same Program in Other Languages

C++ Online Test


« Previous Program Next Program »



Like/Share Us on Facebook 😋