8 進数から 10 進数への変換アプリを作成しようとしています。
問題は、戻り値が本来あるべき値よりも 1 少ないことです。例:
入力: 2426 (10 月)
戻る必要があります: 1302 (12 月)
返品: 1301 (12 月)
何が問題なのですか?誰かが知りたい場合は、最新の 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;
}
IntegerLength 関数:
int IntegerLength(int value) {
int divisor = 10;
int length = 1;
while(value >= divisor)
{
value = (value - (value % divisor)) / divisor;
length ++;
}
return length;
}
(ところで、私は母国語から英語に変数を翻訳したので、英語以外の変数がそう言っているのを見たら、私はそれを修正します)