# C++ Program to Convert Decimal to Octal

« Previous Program Next Program »

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 logics 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, 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:

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

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. 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=6
• octalNum=4
• octalNum=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, 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;
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 »