- ベストアンサー
すごろくに使用するサイコロの目生成プログラム
- すごろくに使用するサイコロの目を生成するプログラムを作成しましょう。ランダムな1から6の整数を表示するだけでなく、特定のルールに従った表示も行いましょう。
- サイコロの目が1の場合には「mouikkai」と表示し、目が4の場合には「ikkai yasumi」と表示します。
- このプログラムを使って、20回のサイコロの結果を表示してみましょう。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もう一回になったときや、一回休みになったとき、駒の位置はどう動くのでしょう。その辺のルールがあやふやですね。 #include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int n, i, pos; pos = 0; srand(time(NULL)); for (i = 0; i < 20; i++) { n = (int) (6.0 * rand() / RAND_MAX) + 1; printf("%4d: saikoro = %d, pos = %d\n", i, n, pos); switch (n) { case 1: printf("mouikkai\n"); pos++; i--; break; case 4: printf("ikkaiyasumi\n"); pos += 4; i++; break; default: pos += n; } } printf("last pos = %d\n", pos); return 0; }
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
まずは 32767.1 がどこから出てきたのかを補足にどうぞ。 また、おきまりの指摘として srand() で初期化しましょう。
補足
srandを使ってするべきでした。 また(double)rand()/32767.0とすると 0から1.0の実数乱数を作るために使用しました。 #include <stdio.h> #include <stdlib.h> #include<time.h> void main (void) /*サイコロ*/ { int i,x,iseed; iseed=(int)time(NULL); srand(iseed); for(i=0;i<20;i++){ x=(int)(6*((double)rand()/((double)RAND_MAX+1))+1); printf("%d\n",x); switch(x){ case 1: printf("mou ikkaix=%d\n",x); break; case 4: printf("ikkai yasumix=%d\n",x); break; } } } 長いですけどできました。 お騒がせしまして申し訳ございません。