2016-10-01 7 views
0

이 코드를 작성했지만 출력이 항상 0 인 것은 문제가 될 수 있습니까? 난 그냥 x 번호 시스템에서 10 진수로 변환 코드를 작성.C++, x 숫자 시스템에서 십진수로 변환

#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; 

}

만약 X보다 작은 10 쉬운하지만 난 때문에 숫자의 문자 사용의 10 + 시스템을 처리하지 못할.

+0

코드 ***을 질문 ***에 입력하십시오. –

+0

또한 영어 이외의 언어로 코드를 작성하는 데있어서의 주요 단점 중 하나는 나머지 지구에서 도움을 얻지 못할 수도 있다는 점입니다. 더 나쁜 것은 "x"와 같은 암호 같은 변수 이름을 사용하면 * anyone *의 도움을 얻지 못할 것입니다. –

+0

Sry u가 맞습니다 – Koreszka10

답변

0
  1. 귀하의 ii가 루프 내에서 증가해야합니다 귀하의 1

  2. 에서하지, 0에서 시작한다. 지금 당장은 i이 증가하지 않으므로 항상 1의 값을 가지므로 str[1] 만 볼 수 있습니다.

  3. 귀하의 루프는하지 , str[i] != '\0' 동안 str[i] == '\0' 동안을 계속해야합니다.

  4. ABCDEF 문자뿐만 아니라 abcdef 문자도 처리 할 수 ​​있습니다.

-1

정확하게 필요한 것을 수행해야합니다. std::stol을 사용해야합니다.