尝试从一个数字系统转换为十进制时,c ++上的奇怪错误

时间:2016-11-09 00:58:50

标签: c++ decimal system

所以我用c ++编写这个程序,它要求用户给出一个2到10之间的数字(基数)和1-10之间的数字,然后取一些所说的数字,cypher by cypher并将其转换为十进制。

奇怪的是,这个代码似乎适用于每种情况,除非基数是5,只有在for循环的第一次迭代中失败,当它似乎得到结果-1时。

例如,基数5,数字3: 编号341应为:3 * 5 ^ 2 + 4 * 5 ^ 1 + 1 * 5 ^ 1 = 75 + 20 + 1 我的代码是:74 + 20 + 1

试图查看结果:      数=数+(位* POW(基中,(i-1)));

并且单独地,数字是0,数字* pow(基数,(i-1))是75,但是当它们相加时它节省了74并且我不知道为什么会发生这种情况。 正如我所说,代码似乎适用于我检查的其他所有情况。

有什么想法吗?另外,不要告诉我使用矢量,这个是用于教室而且必须在没有它们的情况下完成。我很想知道错误在哪里!

#include <iostream>
#include <cmath>

using namespace std;

int main()
{

int base,num_digits;
int digit;
int base_number=0,number=0;
do{
cout << "Enter a base(2-10): " << endl;
cin >> base;
}while(base>10 || base<2);

do{
cout << "Enter a number of digits(1-10): " << endl;
cin >> num_digits;
}while(num_digits>10 || num_digits<1);



for(int i=num_digits;i>=1;i--){

        do{


       if(i==num_digits){
            cout << "Enter first digit: " << endl;
            cin>>digit;
        }
        else if(i==1){
            cout << "Enter last digit: " << endl;
            cin>>digit;
        }
        else{
            cout << "Enter the next digit: " << endl;
            cin>>digit;
        }
        }while(digit<0 || digit>base-1);

    base_number=base_number*10+digit;
    number=number+(digit*pow(base,(i-1)));
}

cout << "The number " <<base_number<<" on base "<<base<<" corresponds to "<<number<< " on decimal base"<<endl;

return 0;
}

0 个答案:

没有答案