変数同士の比較がうまくいきません。
Posted: 2016年3月19日(土) 20:55
始めて質問させていただきます。
プログラミング初心者で、コードのどこが間違っているのかよくわかりません。
具体的にはヌメロンという、コンピューターの作成した三桁の乱数をプレイヤーが当てていく数当てゲームで、
1.コンピューターが答えの数を決定
2.プレイヤーが数を提示して質問
3.プレイヤーの数字のうち1つが答えに含まれていれば1バイト、位置も同じなら1イートとして表示
4.3イートなら終了、でなければ2へ
という流れです。イートはバイトに含まれません。
コードはこんな感じです。実際には答えの数は表示しません。
「//判定」のfor文の中だと思います。どうやら百の位の数が無視されてしまっているようなのです。
そのほかのコードも見づらいところがあるかもしれませんが、ご容赦ください。
どうすれば解決できるでしょうか。お願いします。
プログラミング初心者で、コードのどこが間違っているのかよくわかりません。
具体的にはヌメロンという、コンピューターの作成した三桁の乱数をプレイヤーが当てていく数当てゲームで、
1.コンピューターが答えの数を決定
2.プレイヤーが数を提示して質問
3.プレイヤーの数字のうち1つが答えに含まれていれば1バイト、位置も同じなら1イートとして表示
4.3イートなら終了、でなければ2へ
という流れです。イートはバイトに含まれません。
コードはこんな感じです。実際には答えの数は表示しません。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int sol(int num);
int ask[3];
int main(){
printf("コンピューターが出題する三つの数字を当ててください。\n");
//答えの決定
int ans[3], eat = 0, bite = 0, i,n = 0;
srand((unsigned int)time(NULL));
rand(); rand(); rand(); rand(); rand();
do{ ans[0] = rand() % 10; } while (ans[0] == 0);
do{
ans[1] = rand() % 10;
} while (ans[0] == ans[1]);
do{
ans[2] = rand() % 10;
} while (ans[0] == ans[2]||ans[2] == ans[1]);
printf("%d%d%d\n", ans[0], ans[1], ans[2]);
//プレイヤーの入力
int num = 0;
do{
bite = 0, eat = 0,n++;
do{
printf("三つの違う数字を入力してください\n");
scanf_s("%d", &num);
sol(num);
} while (num > 999 || num < 100);//999より大きいか100より小さかったらループ
//判定
for ( i = 0; i < 2; )
{
if (ans[i] == ask[0] || ans[i] == ask[1] || ans[i] == ask[2])
{
bite = bite + 1;
}
if (ans[i] == ask[i])
{
bite = bite - 1;
eat = eat + 1;
}
i++;
}
printf("%d回目:%dイート%dバイト\n", n, eat, bite);
} while (eat != 3);
return 0;
}
//プレイヤーの入力
int sol(int num){
int let1, let2, let3;
let3 = (num) % 10;
let2 = (num / 10) % 10;
let1 = (num / 10 / 10) % 10;
ask[0] = let1;
ask[1] = let2;
ask[2] = let3;
return 0;
}
そのほかのコードも見づらいところがあるかもしれませんが、ご容赦ください。
どうすれば解決できるでしょうか。お願いします。