hit&blowの作り方がわかりません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
一真

hit&blowの作り方がわかりません。

#1

投稿記事 by 一真 » 5年前

HIT&BLOWというゲームを作成しようと考え、自分の思いつく限りのことを試してみたのですが、完全に行き詰まってしまいました。
なにを足せばいいのか何が間違っているのかがさっぱりわかりません。どうか教えていただけないでしょうか。

コード:

#include<stdio.h>

int input();

int main(void){
	
	int himitsu[4]={ 1, 2, 3, 4 };
	int kaito[4];

	int i,j,hit,blow;

	/*回答の数を4つ入力*/
	printf("回答の数を4つ入力してください。\n");
	for(i=0; i<4; i++){
		printf("数字%d:",i);
		scanf("%d", &kaito[i]);
}
/*hitを計算*/
for(i=0;i<4;i++){
if( kaito[i] == himitsu[i] ){
	hit++;
}
}
/*blowを計算*/
for(j=1;j<5;j++){
if( kaito[i] == himitsu[j]  && i != j ){
	blow++;
}
}
/*hit,blowを表示*/
printf("hit=%d blow=%d\n",hit,blow);



return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: hit&blowの作り方がわかりません。

#2

投稿記事 by みけCAT » 5年前

要求仕様がわかりませんが、このコードは少なくとも
  • hit, blowの値を初期化せずに計算(インクリメント)に用いている
  • ループのjの範囲がおかしいので、範囲外のhimitsu[4]の値を読んでいる
  • jのループがiのループの外に出てしまっているので、範囲外のkaito[4]の値を読んでいる
という所が間違っていますね。

また、
  • 後半のインデントが乱れている
  • scanfが成功したかをチェックしていないため、kaito[​i]の値が初期化されず不定のまま計算に使われる可能性がある
  • 関数inputが宣言されているが、使用されていない
という所が間違いとまでは言えませんが、よくないですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る