• ベストアンサー

ヌメロンのプログラム

C言語で3桁ヌメロンをつくりたいと思うのですが プログラムが思いつきません (ヌメロンは番組でやっているのとルールは同じです でもシャッフルやダブルなどのアイテムはいりません 数字も完全ランダムでいいです) ソースコードかフローチャートなどヒントになる ものを教えてください よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

作りたいのは 出題側? 解答側? 出題側なら、 [1]まず0..9からランダムに3つ選ぶ関数を作ってみては。 # それができんようなら前途多難です。 [2]お次は解答者の入力したguessに対し、EAT,BITE数を返す関数。 [3] 2の結果が3-EAT となるまで繰り返す。 ※ このように「問題を分割する」ことができないとプログラムは書けません。

spmz1311
質問者

補足

つくってみたんですがどうやら乱数をつくるところで間違ってしまっているようで srand((unsigned)time(NULL));//初期化 kotae1=rand() &9+1;//答え1桁目 kotae2=rand() &9+1;//答え2桁目 kotae3=rand() &9+1;//答え3桁目 kotae=kotae1+kotae2*10+kotae3*100;//答え こうつくってもたまに8とか22とかの1桁や2桁の数字が出てきてしまいます 乱数範囲指定のやり方はこれであってますよね??

その他の回答 (4)

  • qhtsige
  • ベストアンサー率45% (9/20)
回答No.5

つくってみたんですがどうやら乱数をつくるところで間違ってしまっているようで srand((unsigned)time(NULL));//初期化 kotae1=rand() &9+1;//答え1桁目 kotae2=rand() &9+1;//答え2桁目 kotae3=rand() &9+1;//答え3桁目 kotae=kotae1+kotae2*10+kotae3*100;//答え こうつくってもたまに8とか22とかの1桁や2桁の数字が出てきてしまいます 乱数範囲指定のやり方はこれであってますよね?? ・1から9までの1桁の乱数がほしいとき   kotae1=rand() %9+1 ・001から999までの3桁の乱数がほしいとき、上例の1桁の乱数式を正しくしても良いが、簡単に;  kotae=rand() %999+1; ・000から999までのときは、kotae=rand() %1000; %は余りを求めること。ちなみにrand() は0から最大符号なし整数65535を生成する。     

spmz1311
質問者

お礼

乱数範囲指定についてよくわかりました! 回答ありがとうございました

回答No.4

> 乱数はうまくつくれているのですが > 数字がかぶってしまいます > どうすればいいでしょうか? それ考えるのがプログラミングちゃうんかい。 かぶらなくなるまで乱数生成を繰り返せばいいでしょうに。

spmz1311
質問者

お礼

多分できました! 回答ありがとうございました

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>乱数範囲指定のやり方はこれであってますよね?? 方法は2つあって、 1: Cの入門書をしっかり読み込んで、一通りの知識を身につけた上で、しっかり自分で考える 2: 適当な検索語で検索する。今回だと、「C 一桁 乱数」 プログラミング力をつけたいなら、1で、とりあえず動けば良いなら、2で。

回答No.2

> 乱数範囲指定のやり方はこれであってますよね?? 訊くまでもない。やってみればわかる。 #include <stdio.h> #include <stdlib.h> int main() { int i; for ( i = 0; i < 50; ++i ) printf("%d",rand()&9+1); return 0; } 0-9がデタラメに並びましたか?

spmz1311
質問者

補足

乱数はうまくつくれているのですが 数字がかぶってしまいます (例 225、484など) どうすればいいでしょうか? 簡単なことを何度も何度も質問して申し訳ありません