Я написал этот код, он казался хорошим, но на выходе всегда 0, в чем может быть проблема? Я просто пишу код для преобразования из системы счисления х в десятичную систему.
#include <string>
#include <iostream>
using namespace std;
int main() {
string str;
long szam = 0, Dec, num, Base = 1, x,i=1;
cout << "the number : ";
cin >> str;
cout << "The input number system:";
cin >> x;
while (str[i] == '\0')
{
if (str[i] = 'A') { num = 10;}
else if (str[i] = 'B') { num = 11; }
else if (str[i] = 'C') { num = 12; }
else if (str[i] = 'D') { num = 13; }
else if (str[i] = 'E') { num = 14; }
else if (str[i] = 'F') { num = 15; }
else { num = str[i] - '0'; }
Dec = Dec + num * Base;
Base = Base * x;
}
cout << szam << endl;
return 0;
}
Если х меньше 10, это легко, но я не могу справиться с системой 10+ из-за использования букв в цифрах.
Ваш i
должен начинаться с 0, а не с 1.
Ваш i
должен быть увеличен в вашем цикле. Как сейчас, i
никогда не увеличивается, поэтому всегда имеет значение 1
так что вы только смотрите на str[1]
,
Ваш цикл должен продолжаться, пока str[i] != '\0'
, не в то время как str[i] == '\0'
,
Возможно, вы захотите рассмотреть дело не только с буквами ABCDEF
но и буквы abcdef
,
Вы должны использовать станд :: КВП который делает именно то, что вам нужно.