2012-03-18 5 views
0

Я пытаюсь реализовать следующую логику в C++. Здесь x и y - 2 переменные типа integer. xs и ys - 2 переменные типа string. Я хочу преобразовать целое число в строку, а затем перейти к логике.Неправильное преобразование int в строку в C++

def isGoodPoint(x,y): 
    xs=str(abs(x)) 
    ys=str(abs(y)) 
    xsum=0 
    ysum=0 
    for c in xs: 
     xsum=xsum+int(c) 
    for c in ys: 
     ysum=ysum+int(c) 
    if xsum+ysum <=19: 
     return True 

Мой C++ Source-код:

Так или иначе преобразование не работает, и я получаю неправильные значения в хз и ув. Например: если мой вызов функции: isGoodPoint (0,0), то во время режима отладки значения в xs и ys - это что-то вроде 45 и 50 или некоторые странные значения. На самом деле xs и ys должны иметь 0 в качестве своих значений.

Я что-то упустил?

+1

Не могли бы вы разместить действительный компилирующий код на C++? –

+0

Вы уверены, что это 'xs' и' ys', которые имеют странные значения? Пожалуйста, проверьте еще раз. –

+0

'def isGoodPoint (x, y):' это не правильный и пролив C++ синтаксис –

ответ

4

Возможно, вы захотите добавить цифры каждого номера. Теперь вы добавляете значение ASCII каждой цифры. Если вы хотите добавить цифры, вы должны вычитать значение ASCII первой цифры в:

for each (char c in xs) 
    xsum = xsum + (c - '0'); 

for each (char c in ys) 
    ysum = ysum + (c - '0'); 

Это должно сделать это. В своем коде, это выражение:

xsum = xsum + int(c); 

Создает int, который будет содержать значение c. Поскольку c является символом и может быть преобразован в int, то у вас есть только int, который содержит значение ASCII этого символа.

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