c ++, преобразователь из системы счисления x в десятичную

Я написал этот код, он казался хорошим, но на выходе всегда 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+ из-за использования букв в цифрах.

0

Решение

  1. Ваш i должен начинаться с 0, а не с 1.

  2. Ваш i должен быть увеличен в вашем цикле. Как сейчас, i никогда не увеличивается, поэтому всегда имеет значение 1так что вы только смотрите на str[1],

  3. Ваш цикл должен продолжаться, пока str[i] != '\0', не в то время как str[i] == '\0',

  4. Возможно, вы захотите рассмотреть дело не только с буквами ABCDEF но и буквы abcdef,

0

Другие решения

Вы должны использовать станд :: КВП который делает именно то, что вам нужно.

-1

По вопросам рекламы [email protected]