[英]Octal to Decimal Conversion ( DEBUGGING)
所以代碼是為了將十進制數轉換為八進制數,並且我已經重載了運算符<<以提供我的輸出
然而,轉換從未發生,我得到了一個奇怪的輸出
這是我的代碼
#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
八進制 + 對象 =14
輸入基數 10 不添加
15
總和 = 29
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;
}
}
八進制和十進制是整數值的外部表示。 在內部,值只是一個值; 它不是八進制,也不是十進制,也不是紅色。 將八進制輸入轉換為整數值是指將文本輸入轉換為內部值; 將值轉換為八進制意味着生成表示內部值的文本字符串。 十進制也是一樣。 因此,當您的任務是將八進制轉換為十進制時,您以文本字符串開頭並以文本字符串結尾,通常轉換為中間表示中的整數值。 所以八進制 --> 整數 --> 十進制,實現為文本 --> 整數 --> 文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.