我正在尝试编写一个八进制到十进制转换的应用程序。
问题是返回值比应有的值小 1,例如:
输入:2426(十月)
应该返回:1302(十二月)
回报:1301(十二月)
有什么想法有什么问题吗?如果有人想知道,我正在使用最新的 Code::Blocks。
这是我的代码:
int oct2dec (int number) {
int system = 8;
int length = IntegerLength(number);
int power = length - 1;
int result = 0;
int partial = 0;
do {
partial = part_nr(number);
cout<<"czastka: "<<partial<<endl;
result = result + (partial * pow(system,power));
number = number - (partial * pow(10,power));
power--;
} while (number>0);
return result;
}
part_nr 函数:
int part_nr(int number) {
int multipler = 1;
int result = 0;
do {
int temp=number/multipler;
if(temp<10) result = temp;
multipler = multipler*10;
} while (result == 0);
return result;
}
整数长度函数:
int IntegerLength(int value) {
int divisor = 10;
int length = 1;
while(value >= divisor)
{
value = (value - (value % divisor)) / divisor;
length ++;
}
return length;
}
(顺便说一句。我已经将变量从我的母语语言翻译成英语,所以如果你看到任何非英语变量这么说,我会更正它)