所以代码意味着将十进制数转换为八进制数,并且我已经重载了运算符<<给出我的输出
然而转换永远不会发生,我得到一个奇怪的输出
这是我的代码
#include<iostream>
#include<math.h>
using namespace std;
class OCTAL
{
int octnum;
public: int dec_oct(int);
int oct_dec(int);
OCTAL(int x)
{
octnum=dec_oct(x);
}
int operator+(int k)
{
return (oct_dec(octnum)+k);
}
friend ostream& operator<<(ostream&,OCTAL);
};
int OCTAL::dec_oct(int x)
{
int i=0,sum=0;
while(x!=0)
{
sum+=((x%8))+(pow(10,i));
x=x/8;
i++;
}
return sum;
}
int OCTAL::oct_dec(int x)
{
int i=0,sum=0;
while(x!=0)
{
sum+=(x%10)+pow(8,i);
x=x/10;
i++;
}
return sum;
}
ostream& operator<<(ostream& ps,OCTAL obj)
{
cout<<obj.octnum<<endl;
return ps;
}
int main()
{
int x,k;
cout<<"Enter decimal N\n";
cin>>x;
OCTAL n(x);
cout<<"Octal + object ="<<n<<endl;
cout<<"Enter base 10 No to be added\n";
cin>>k;
int y=(n+k);
cout<<"Sum = "<<y<<endl;
}
#include<math.h>
using namespace std;
class OCTAL
{
int octnum;
public: int dec_oct(int);
int oct_dec(int);
OCTAL(int x)
{
octnum=dec_oct(x);
}
int operator+(int k)
{
return (oct_dec(octnum)+k);
}
friend ostream& operator<<(ostream&,OCTAL);
};
int OCTAL::dec_oct(int x)
{
int i=0,sum=0;
while(x!=0)
{
sum+=((x%8))+(pow(10,i));
x=x/8;
i++;
}
}
int OCTAL::oct_dec(int x)
{
int i=0,sum=0;
while(x!=0)
{
sum+=(x%10)+pow(8,i);
x=x/10;
i++;
}
}
ostream& operator<<(ostream& ps,OCTAL obj)
{
cout<<obj.octnum<<endl;
return ps;
}
int main()
{
int x,k;
cout<<"Enter decimal No\n";
cin>>x;
OCTAL n(x);
cout<<"Octal + object ="<<n<<endl;
cout<<"Enter base 10 No to be added\n";
cin>>k;
int y=(n+k);
cout<<"Sum = "<<y<<endl;
}
输出
输入要转换的十进制数字
10个
Octal + object = 14
输入基数10否添加
15个
Sum = 29
答案 0 :(得分:0)
sum+=(x%10)+pow(8,i);
想象一下x
是9.你得到9%10 = 9 + 8 ^ 0 = 9 + 1 = 10.
我猜这不是你想要的。你可能想要11 - 但是你应该将值作为字符串返回。
问题是你一次处理10个可能的值(0-9),当你实际上不能处理超过8时。理想情况下,你每次迭代都会将x移位3位,即你可以随时代表你正在处理的价值。
x & 7
将为您提供前3位的值,然后您可以将x移位3 x>>3
以准备接下来要读取的3位。
这是让你入门的东西:
int main() {
int x = 44;
while(x > 0) {
auto v = x&7;
cout<<v<<endl;
x=x>>3;
}
}
答案 1 :(得分:0)
八进制和十进制是整数值的外部表示。在内部,价值只是一个价值;它不是八进制,不是十进制,也不是红色。将八进制输入转换为整数值意味着将文本输入转换为内部值;将值转换为八进制意味着生成表示内部值的 text 字符串。十进制相同的东西。因此,当您的任务是将八进制转换为十进制时,您将以文本字符串开头并以文本字符串结尾,通常转换为中间表示中的整数值。所以八进制 - &gt;整数 - &gt;十进制,实现为文本 - &gt;整数 - &gt;文本。