ここから本文です

※500枚※課題クリアに協力をお願い致します。の続きです。 乱数を扱うといいとのこ...

yug********さん

2013/3/114:00:00

※500枚※課題クリアに協力をお願い致します。の続きです。
乱数を扱うといいとのことでしたが、なかなか厳しいですね・・・。

数当てゲーム(Hit & Blow)を作成しなさい。ただし、自分が考えた4桁の数字をコンピュータに当てさせる。
※要は通常の自分が当てるのではなく、自分が数字を考えて相手に当てさせる

[出力結果](9753を当てさせる場合)
number:1234 ←コンピュータが考えた4桁の数字
hit:0 ←自分が判断して入力(間違えないように)
blow:1 ←自分が判断して入力(間違えないように)

number:5678
hit:0
blow:2

number:1357
hit:1
blow:2




[前回の質問の補足]
確かに難しい課題です。でもそこまで長くはならないはずなんです。

①自分で決めたり、メモったりして4桁の数字を決めます。
②出力する
③コンピュータが適当に4桁のナンバーを打ってくる
④それをみて、自分でhitとblowを打ち込む
の繰り返しだと思われます。ちょっとプログラムにするのは難しいですが…

閲覧数:
432
回答数:
4
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

2013/3/307:39:51

乱数の意味が無い(笑)。

blowの意味が全然無い(大笑)。

#include "stdio.h"
int sub(int,int);
int flg[10]={0,0,0,0,0,0,0,0,0,0};
char disp[5]={0,0,0,0,0};
int hit,blow;
void main()
{
int i ,ret;
for(i=0;(i<10)&&(ret !=4);i++)
{
flg[i] = 1;
ret = sub(i,0);
flg[i] = 0;
}
}

int sub(int cnt,int lev)
{
int i ,ret;
disp[lev]=cnt+0x30;
if(lev>2)
{
printf("number:%s\n",disp);
printf("hit:");
scanf("%d",&hit);
printf("blow:");
scanf("%d",&blow);
return(hit);
}
for(i=0;(i<10)&&(ret !=4);i++)
{
if(flg[i]==0)
{
flg[i] = 1;
ret = sub(i,lev+1);
flg[i] = 0;
}
}
return(ret);
}

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

pyo********さん

2013/3/216:42:47

>①自分で決めたり、メモったりして4桁の数字を決めます。
>...
>③コンピュータが適当に4桁のナンバーを打ってくる
>...
>の繰り返しだと思われます。
乱数の必要がない。

den********さん

2013/3/216:28:26

cafelate911さん

そのロジックは...数字の重複を...考慮してないゾ(笑)

tekitoukさん

編集あり2013/3/311:52:01

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int GetRandom(int min,int max);

int main(void)
{
int hit,blow;
srand((unsigned int)time(NULL));

int number;
int a,b,c,d;

while(1){
while(1){
number=GetRandom(1,9999);
a=number/1000;
b=(number%1000)/100;
c=((number%1000)%100)/10;
d=((number%1000)%100)%10;
if(a==b||a==c||a==d||b==c||b==d||c==d);
else{break;}
}
printf("number:%04d\n",number);
printf("hit:");
scanf("%d",&hit);
printf("blow:");
scanf("%d",&blow);
if(hit==4&&blow==0){break;}

}

return 0;
}

int GetRandom(int min,int max)
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}

しょうがないにゃ~

初期化されていない変数を使い、まともにコンパイルも通らないプログラムですらないものをよく回答出来ますね(爆笑)

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる