課題

■課題ルール

	1.ちゃんと動くものを提出する
	2.インデントなどをきちんとして、可読しやすいソースにする
	  (ひどかったら再提出または減点)
	3.課題**の前に●がついているものは必須
	4.プロジェクト名の****の部分は苗字をローマ字表記
	5.同級生のソースを無断でコピー禁止
	6.「ランダム」と書かれている部分はrand関数を使用する
	

●課題01:

	プロジェクト名:
		PG_Task_01_001

	仕様:
		画面に "Start the challenge" と出力する
		プログラムを作成して下さい。
	
	備考:
		出力内容はウィンドウを閉じるまで表示させ続ける
		(ctrl + F5 不可)

●課題02:

	プロジェクト名:
		PG_Task_****_002

	仕様:
		1~100のランダムな整数の値を2つ使用して+、-、*、/、%の
		計算を行いその結果を出力するプログラムを作成して下さい。

	備考:
		出力内容はウィンドウを閉じるまで表示させ続ける
		(ctrl + F5 不可)

●課題03:

	プロジェクト名:
		PG_Task_****_003

	仕様:
		0~10のランダムな値に対し以下の出力結果になるような
		プログラムを作成して下さい。

			値が0の時の出力結果:
				勇者
			値が1の時の出力結果:
				僧侶
			値が2の時の出力結果:
				戦士
			値が3の時の出力結果:
				魔法使い
			値が4の時の出力結果:
				武道家
			値が5以上の場合の出力結果:
				はずれ
	備考:
		1.出力内容はウィンドウを閉じるまで表示させ続ける
		  (ctrl + F5 不可)

		2.ifとswitchでそれぞれ同じ出力結果になるように作成する

●課題04:

	プロジェクト名:
		PG_Task_****_004

	仕様:
		以下の出力結果になるようなプログラムを作成して下さい。

			1回目出力
			2回目出力
			3回目出力
			4回目出力
			5回目出力

	備考:
		1.出力内容はウィンドウを閉じるまで表示させ続ける
		  (ctrl + F5 不可)
2.while、do-while、forでそれぞれ同じ出力結果に   なるように作成する

●課題05:

	プロジェクト名:
		PG_Task_****_005

	仕様:
		1.0~9のランダムな整数の値を10個持つ配列を用意し
		2.同じ数字が連続して並んでいる場合、
		  その連続している回数を調べてその結果を出力する
		3.出力の際は連続している内容をわかりやすくするために
		  配列の要素も全て表示する
		  ※もし連続がなかったら「バラバラ」と表示する

			例:
				配列:
					4, 2, 6, 6, 4, 2, 0, 6, 5, 9

				結果:
					連続あり:
						4, 2, 6, 6, 4, 2, 0, 6, 5, 9
						6が2連続で並んでいる

					連続なし:
						4, 2, 6, 8, 4, 2, 0, 6, 5, 9
						バラバラ

	備考:
		1.出力内容はウィンドウを閉じるまで表示させ続ける
		  (ctrl + F5 不可)

●課題06:

	プロジェクト名:
		PG_Task_****_006

	仕様:
		1.プレイヤーの初期化関数PlayerInitを作成して
		  そこに指定したパラメータを渡して初期化する
		  プログラムを作成して下さい。

			プレイヤーのパラメータ:
				Speed(float)	// 移動速度
				DethFlg(bool)	// 死亡チェックフラグ
				State(int)	// 状態

			作成する関数の制約:
				戻り値なし

			関数内で初期化の値:
				Speed = 10
				DethFlg = false
				State = 0

		2.初期化の結果を出力してください。
		  ※この出力はmain関数で行うこと

			出力結果:
				速度:10
				チェックフラグ:0
				State:0

	備考:
		1.出力内容はウィンドウを閉じるまで表示させ続ける
		  (ctrl + F5 不可)

●課題07:

	プロジェクト名:
		PG_Task_****_007

	仕様:
		ユーザーが半角英字を解析して各アルファベットの個数を表示してください。
		※大文字と小文字は分けなくていいです。

		例:
			aabcdef

			出力結果:
				a:2
				b:1
				c:1
				d:1
				e:1
				f:1
				g:0
				h:0
				i:0
				j:0
				k:0
				l:0
				m:0
				n:0
				o:0
				p:0
				q:0
				r:0
				s:0
				t:0
				u:0
				w:0
				v:0
				x:0
				y:0
				z:0

	備考:
		1.出力内容はウィンドウを閉じるまで表示させ続ける
		  (ctrl + F5 不可)

●課題08:

	プロジェクト名:
		PG_Task_****_008

	仕様:
		1.学生成績構造体を作成して10人分の成績を設定してください。
			学生成績(最低設定項目なので項目の追加は有り)
				名前(char[32])
				国語(int)
				数学(int)
				理科(int)
				社会(int)
				英語(int)

		2.1で作成した構造体を使用して以下の仕様を実装してください。
			2-1.全員分の構造体のデータに値を設定し、その値により表示内容を変更する
				0:各学生の5教科の点数
					例:
						山田太郎:国語:100 数学:100 理科:100 社会:100 英語:100
								以下残り9人分

				1:各学生の5教科の平均点(少数点第2位まで表示)
					例:
						山田太郎:平均点 74.5
							以下残り9人分

				2:1学年(10人)の各教科ごとの平均点(少数点第2位まで表示)
					例:
						国語の平均:80.00
						数学の平均:80.00
						理科の平均:80.00
						社会の平均:80.00
						英語の平均:80.00

				3:合計点数の多い順番に学生の名前と合計点を表示する
					例:
						山田太郎:492
						飛友間太郎:380
						以下8人分表示

			2-2.
				表示後、別内容を表示するかを求める(0:表示、1:終了)
				1なら2-1へ戻り、0なら終了する

課題09:

	プロジェクト名:
		PG_Task_****_009

	仕様:
		じゃんけんを作成してください。

		1.じゃんけん開始のメッセージを出す

		2.じゃんけんの手の説明をする(0:グー、1:チョキ、2:パー)

		3.PCの手とユーザーの手の結果を表示する

		4.再戦するかを決めてもらう(0:続行、1:終了)
		    0 => 2へ進む
		    1 => 終了

	備考:
		じゃんけんの勝敗判定はユーザー関数化する

課題10:

	プロジェクト名:
		PG_Task_****_010

	仕様:
		ビンゴを作成してください。

		1.ビンゴ開始のメッセージを出す

		2.ビンゴカードの表示を行う
			例:
				 1 25 40 54 68
				10 18 35 49 73
				 8 28 ○ 59 71
				12 22 43 60 63
				11 16 32 46 66

		3.ユーザーにEnterを押すのを促して
		  ユーザーがEnterを押したら1~75のランダムな値を決定する

		4.3の値とビンゴカードの状況を表示する
		    ※1.ビンゴカードに該当する数字があれば「○」に置き換える
		  ※2.リーチになればリーチの数を表示する

				今回の数字:22

				 1 25 40 54 68
				10 18 35 49 73
				 8 28 ○ 59 71
				12 ○ 43 60 63
				11 16 32 46 66

		5.ビンゴになるまで3に戻り、ビンゴになったら
		  もう一度やるかをたずねる(0:続行、1:終了)
		  続行ならビンゴカードを作り直して2からスタートする
		    終了ならそのまま終わる

	備考:
		・ビンゴカードは以下の制約のもとで作成してください。
			1行目は1~15
			2行目は16~30
			3行目は31~45
			4行目は46~60
			5行目は61~75
		・main関数に全て書かない

課題11:

	プロジェクト名:
		PG_Task_****_011

	仕様:
		コードブレーカー(Hit & Blow)を作成してください。

		1.PC側がランダムな値4桁を作成する

		2.ユーザー側に4桁の値の入力を求める

		3.ユーザー側の値とPC側の値を比較してその結果を表示する
		  結果の内容としてはHitとBallがある
			Hit:
				PC側とユーザー側の値で桁と値が一致している

				例:
					PC側:1234
					ユーザー側:1567

					PC側の4桁目の値とユーザー側の4桁目の値は
					同じなのでHitとして扱う

			Ball:
				PC側とユーザー側の値で桁が違うが同じ値がある

				例:
					PC側:1234
					ユーザー側:2598

					PC側の3桁目とユーザー側の4桁目が同じ値なので
					Ballとして扱う

		4.再度挑戦するかをユーザーに聞く(0:続行、1:終了)
		    続行なら2へ戻り、終了ならPC側の4桁を表示して終了する

	備考:
		・ユーザー、PC側ともに4桁の中に同じ数字が入れないようにする
		・main関数に全て書かない

課題12:

	プロジェクト名:
		PG_Task_****_012

	仕様:
		トランプのブラックジャックを作成してください。

		1.ブラックジャック開始メッセージを表示する

		2.親のカードとユーザーのカードを表示する
			例:
				カードの表示 => 合計値

				親:H-13 => 10
				ユーザー:D-4 C - 7 => 11

		3.ユーザーにヒットかスタンドかを確認する
		    (ヒット:0 スタンド:1)
		    ヒットならカードを1枚追加し、2へ(バーストしたら5へ進む)
		  スタンドなら4へ進む

		4.親のカードの合計が17以上になるまでカードを追加する

		5.勝者を表示する

		6.もう一度するかをユーザーに聞く(0:続行、1:終了)
		    続行なら終了ならそのまま終わる

	備考:
		・トランプは52枚でジョーカーは入れない
		・画面に表示する際は「カードの種類-数字」で表示する
		・main関数に全て書かない

課題13:

	プロジェクト名:
		PG_Task_****_013

	仕様:
		オセロを作成してください。

		1.オセロ開始メッセージを表示する

		2.オセロ開始

		3.勝敗表示

		4.もう一度するかをユーザーに聞く(0:続行、1:終了)
		    続行なら2へ、終了ならそのまま終わる

	備考:
		・配置位置はオセロ盤の縦と横の位置を指定する方法でも
		 SetConsoleCursorPositionを使用する方法でも
		 その他の方法で問題なし
		・AIは必要ないので基本ルールを実装する
		・main関数に全て書かない