プログラミング入門I 宿題 2018.11.19

Back


図1に示すアーチェリーの的のような領域があるとする.


図1 的の構成

中心の黄色の円の半径を1,赤は半径2,青が半径3で,黒い部分の一番外の半径が5となっているとし,それぞれの色の得点は黄色10点,赤8点,青6点,黒4点で,的を外れた場合には0点とする.

−5から5の範囲の整数を乱数により2つ発生させ,それを xy 平面の座標とする.的の中心が原点にあるとするとき,発生させた座標に矢が刺さったとするときの得点を答えるプログラムを作成せよ.なお,境界線上はそれぞれ内側の得点が適用されるものとする.

My student number: s186099

Position: (1, -1)
Point:  8

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

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

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

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


解答例

// ************************************************** 
//                                                    
//      レポート課題                                    
//      2018.11.19                                    
//                                                    
// ************************************************** 
//                                                    
//      学生番号:                                     
//                                                    
//      氏名:                                         
//                                                    
// ************************************************** 
//                                                    
//      
              
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	srand((unsigned) time(NULL));
	
	int x, y, r2;
	
	printf("My student number: s186099\n\n");
	
	x = rand() % 11 - 5;
	y = rand() % 11 - 5;
	r2 = x * x + y * y;
	
	printf("Position: (%d, %d)\nPoint: ", x, y);
	
	if(r2<=1)
	{
		printf("10\n");
	}
	else if(r2<=4)
	{
		printf(" 8\n");
	}
	else if(r2<=9)
	{
		printf(" 6\n");
	}
	else if(r2<=25)
	{
		printf(" 4\n");
	}
	else
	{
		printf(" 0\n");
	}
	
	printf("\n-------------------------\n\n");

	return 0;
}


Back