2つの4桁の数値を比較し、2つの間の類似した桁の数を返す関数を作成しようとしています。たとえば、生成された番号が4311で、ユーザーが1488と入力した場合、スコアは2(4と1)を返す必要があります。
4311でもう1つが1147の場合、スコアは3(1、1、4)を返すはずです。なぜそれが私に正しい出力を与えていないのか分かりません、あなたが助けてくれることを願っています。
int getSameDigitScore(int playerGuess, int generatedNum) {
int score = 0;
int i;
int j;
int k;
int generatedNumArray[4];
int playerGuessArray[4];
// turns playerGuess into an array
while (playerGuess > 0 ) {
i = 0;
playerGuessArray[i] = playerGuess % 10;
i++;
playerGuess /= 10;
}
// turns generatedNum into an array
while (generatedNum > 0) {
i = 0;
generatedNumArray[i] = generatedNum % 10;
i++;
generatedNum /= 10;
}
// compares the two arrays
for (k = 3; k >= 0; k--) {
for (j = 3; j >= 0; j--) {
if (generatedNumArray[k] == playerGuessArray[j]) {
score++;
playerGuessArray[j] = 0;
j = -5;
}
}
}
return score;
}
i = 0
playerGuessArrayとgenerateNumArrayの生成中に、whileループ内で割り当てています。そのため、playerGuessおよびgenerateNumArray配列には要素がfirst digit of your number 0 0 0
。として含まれます。初期化をループの外に移動します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加