2012-03-18 14 views
0

C++で次のロジックを実装しようとしています。ここで、xとyは整数型の2つの変数です。 xsとysはstring型の2つの変数です。私は整数を文字列に変換してからロジックを進めたいと思います。C++でのintの文字列への不正変換

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++ソースコード:

どういうわけか、変換が動作していないと私はXSとYSで不正な値を取得しています。たとえば:私の関数呼び出しが: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); 

は値cを保持するintを作成します。 cはcharでint型に変換できるので、最終的にはその文字のASCII値を含むintになります。

関連する問題