2016-04-12 3 views
0

Я новичок в C++, и у меня есть простая проблема. Я должен изменить свой номер (1011) на десятичный. Cmath включен. Я пытаюсь использовать POW метод, но посмотрите на мой выходной пожалуйста:Почему мой метод pow не работает?

Код:

char *b = "1011"; 
int maxPow = 3; 
for (int i = 0; i < 3; ++i) { 
    cout << b[i] * pow(b[i], (maxPow - i)/1.0) << endl; 
} 

Выход:

5.7648e+006 
110592 
2401 

Я пытаюсь сделать это следующим образом:

result = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 

Проблема с моим массивом? Где? Пожалуйста, помогите мне, если сможете.

+0

Вам также нужно реализовать 'biff' и' bang'. –

+0

, вы можете захотеть вернуть свой код, чтобы другие могли с ним столкнуться, могут увидеть проблему и соответствующее решение. – pyInTheSky

ответ

2

Итак, проблема, с которой вы сталкиваетесь, заключается в том, что вы перебираете значение ascii и умножаете значение ascii. Попробуйте что-то вроде int digit = b[i]-'0';, а затем замените, где вы используете b [i] с переменной цифрой.

вычитание «0» ... означает, что вы вычитаете значение ascii нуля из заданного символа. Таким образом, вычитая значение ascii '0' из '0', вы получите числовое значение 0 или вычитаете ascii '0' из ascii '1', указав числовое значение 1.

Посмотрите на - http://www.asciitable.com/index/asciifull.gif на получить лучшее понимание.

Еще одна небольшая демонстрация, которую вы можете сделать, это просто cout b [i], и вы увидите, что значение 48 или 49 напечатано, так как это числовые значения ascii 0 и ascii 1 соответственно.

+0

@pylnTheSky Спасибо, человек :) –

+0

Вы очень приветствуете – pyInTheSky

Смежные вопросы