プログラミング入門 情報科学演習 宿題 2016.12.19

Back


2項分布をシミュレートすることを試してみましょう.コイン5枚を100回投げるとします.各回で表の出た枚数を累積して以下のように数値とグラフで示すプログラムを if 文等の条件分岐を使用しないで作成しましょう.

My student number: s164099

 0  1  2  3  4  5 
 5 17 32 31 12  3 

0: *****
1: *****************
2: ********************************
3: *******************************
4: ************
5: ***

----------------------------------

なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.

コインを投げる時も,グラフ表示の時も2重の for 文を使用します.

一度にコインを5枚投げるようなことはプログラムではできないので,1枚のコインを6回投げる作業を行って,表の数を積算し,それを100回繰り返すことになります.

また,配列の使用はサイコロの目の頻度の演習問題を参考にしてください.
解答用紙を使用する際には,まず,科目名の不要な方を削除してください.また,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

/* ************************************************** */
/*                                                    */
/*      プログラミング入門  情報科学演習C7                            */
/*      レポート課題                                  */
/*      2016.12.19                                    */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      学生番号:                                    */
/*                                                    */
/*      氏名:                                        */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      この行以降に解答のプログラムを書くこと        */

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

main()
{
	srand((unsigned) time(NULL));
	
	int i, j, coin[6], toss, sum;
	
	printf("My student number: s164099\n\n");
	
	for(i=0; i<=5; i++)
		coin[i] = 0;
	
	for(i=1; i<=100; i++){
		sum = 0;
			
		for(j=0; j<=4; j++){
			toss = rand() % 2;
			sum += toss;
		}
		
		coin[sum]++;
	}
	
	for(i=0; i<=5; i++)
		printf("%2d ", i);
		
	printf("\n");
	
	for(i=0; i<=5; i++)
		printf("%2d ", coin[i]);
	
	printf("\n\n");
	
	for(i=0; i<=5; i++){
		printf("%d: ", i);
		
		for(j=1; j<=coin[i]; j++)
			printf("*");
		
		printf("\n");
	}
	
	printf("\n----------------------------------\n\n");
	
	return(0);
}


Back