1989年開業 技術士 佐伯英子(情報工学部門) 文部科学省登録番号 第22082号 日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム キーを押すとサイコロが表示される

●何かキーを押すと、サイコロが表示されるプログラムです。
●乱数を使って、ランダムにくじが表示されるようにしています。
●目の出方がワンパターンになるのを避けるため、現在の時刻を乱数の種として
 使っています。(time(NULL) は1970年 1月 1日の00:00:00 から現在までの秒数)
       srand(time(NULL));           // 乱数の準備
 ≫ソースファイルのダウンロード: saikoro01.c
【問題】
●ESCキーを押すまで繰り返し実行するように変更してみよう。
 ※srand関数の位置に注意!!
 ≫解答例1 saikoro02.c
●switch文を使って同様のプログラムを作ってみよう。
●押したキーと表示される目の間に何か関係があるか考えてみよう。
●乱数がほぼランダムであるとして、2回続けて同じ目が出る確率はおよそいくらか。
 実際に記録して確認してみよう。
●1の目の出る確率が他の目が出る確率の2倍になるよう、改造してみよう。
 ≫解答例1 saikoro03.c

/**************/
/*  さいころ  */
/*  乱数      */
/**************/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

void  main( )
{
    int  n;

    printf("さいころを振ります。\n何かキーを押してください。\n");
    getch( );                         // キー入力待ち

    srand(time(NULL));                // 乱数の準備

    n=rand( )%6+1;                    // 乱数からさいころの目を計算

    if ( n==1 )
      {
        printf("+--------+\n");
        printf("|        |\n");
        printf("|   ●   |\n");
        printf("|        |\n");
        printf("+--------+\n");
      }
    else if ( n==2 )
      {
        printf("+--------+\n");
        printf("| ●     |\n");
        printf("|        |\n");
        printf("|     ● |\n");
        printf("+--------+\n");
      }
    else if ( n==3 )
      {
        printf("+--------+\n");
        printf("| ●     |\n");
        printf("|   ●   |\n");
        printf("|     ● |\n");
        printf("+--------+\n");
      }
    else if ( n==4 )
      {
        printf("+--------+\n");
        printf("| ●  ● |\n");
        printf("|        |\n");
        printf("| ●  ● |\n");
        printf("+--------+\n");
      }
    else if ( n==5 )
      {
        printf("+--------+\n");
        printf("| ●  ● |\n");
        printf("|   ●   |\n");
        printf("| ●  ● |\n");
        printf("+--------+\n");
      }
    else
      {
        printf("+--------+\n");
        printf("| ●  ● |\n");
        printf("| ●  ● |\n");
        printf("| ●  ● |\n");
        printf("+--------+\n");
      }
}
   

※SSL暗号化通信対応

佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: yfb22332@nifty.com