変数の整数 "num"をそれぞれの桁で割った数をクリーンな商(0の余りを持つ)で数えることになっています。なぜ私のIf-Elseは本当に評価されないのですか?
注:各桁は一意であるとみなされるため、均等に割り切れる同じ桁の各桁をカウントする必要があります(つまり、222の場合、答えは3です)。
int solver(int num) //gets an integer
{
string numString = to_string(num); //convert integer to string so i can manipulate individual digits
int divisible=0; //will store a count of digits in "num" which can be divided evenly
for (int x = 1; x <= (end(numString) - begin(numString))/*string length*/; x++)
{
if (numString[x-1] == 0 || (end(numString) - begin(numString))-x >=1) //ignore digits which are 0 and or 0s that are last in the array
++x;
if (num % numString[x - 1] == 0) //THIS NEVER EVALUATES TO TRUE. HOW COME???
divisible++;
}
return divisible; //number of digits in variable "num" which can be evenly divided
}
この関数は常に0を返しますが、それをインクリメントするためのif-elseは常にfalseと評価されているため、(つまり、変数int型「割り切れに初期化されたものだ)とスキップ。私がチェックし、もし、そうでないことを確認しましたきています引数は有効な数値を保持しています(すべて整数)。結果の小数部分が評価のために決して到達しない整数なので、それはありますか?それは私が思いつくことができる最高の可能性です。トン解決する方法を知っている。
文字列があります。文字列には文字が含まれています。文字(数字であっても)は数字ではありません。 '0!= '0' '。 –
IDEを使用していますか?あなたは変数 '' 'int test = num%numString [x - 1];' 'を作成し、何のテストが等しいかを見てみることができます –
@VictorTran私はnumを222に、テストは22を返しました....irdird –