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

Back


下の図に示すようなアーチェリー風の的を弓で射るゲームを考える.的は黄色が半径1,赤が半径2,青が半径3,内側の黒が半径4,外側の黒が半径5となっており,得点は,それぞれ10点,8点,6点,4点,2点で的を外れると0点とする.そして的の中心を座標の原点(0, 0)とする.(なお,境界線は内側の得点を採用することとする.例えば,座標(1,0)は10点.)

x座標およびy座標としてそれぞれ-6から6までの整数を乱数により2回発生させ,それが矢の刺さった場所とするとき,2回の射的の合計得点を表示するプログラムを作成せよ.

My student number: s164099

1st shot: (-1,  4) -> Point: 2
2nd shot: ( 0,  0) -> Point: 10
Total point: 12

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

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

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

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


解答例

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

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

main()
{
	srand((unsigned) time(NULL));
	
	int x, y, r2, point1, point2;
	
	printf("My student number: s164099\n\n");
	
	x = rand() % 13 - 6;
	y = rand() % 13 - 6;
	r2 = x * x + y * y;
	
	if(r2<=1)
		point1 = 10;
	else if(r2<=4)
		point1 = 8;
	else if(r2<=9)
		point1 = 6;
	else if(r2<=16)
		point1 = 4;
	else if(r2<=25)
		point1 = 2;
	else
		point1 = 0;
			
	printf("1st shot: (%2d, %2d) -> Point: %d\n", x, y, point1);
	
	x = rand() % 13 - 6;
	y = rand() % 13 - 6;
	r2 = x * x + y * y;
	
	if(r2<=1)
		point2 = 10;
	else if(r2<=4)
		point2 = 8;
	else if(r2<=9)
		point2 = 6;
	else if(r2<=16)
		point2 = 4;
	else if(r2<=25)
		point2 = 2;
	else
		point2 = 0;
			
	printf("2nd shot: (%2d, %2d) -> Point: %d\n", x, y, point2);
	printf("Total point: %d\n", point1 + point2);

	printf("\n---------------------------------------\n\n");
	
	return(0);
}


Back