情報科学演習 宿題 2012.11.12

Back


実習課題で実施した野球ゲームを打者2人に拡張する.表は以下のように2塁打が多くなるように変更する.そして,2人の打席が終了した時点での得点まで表示するようにせよ.

\123456
1HR----1H
2-3H--1H-
3--2H1H--
4--1H2H--
5-1H--2H-
61H----2H

なお,表示においては先頭の行には学生番号を,最後にはハイフンによるラインを出力すること.

My student number: s124099

Dices: 3 4
Batter1: 1H

Dices: 2 2
Batter2: 3H

Run: 1

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

解答作成における条件

条件分岐は switch 文と if else 文を上手に組み合わせて作ってください.また,得点計算は打者ごとの進塁数を数えれば良いのですが,その際に,次週の内容である教科書p.38にある複合演算子を用いると簡潔な処理が可能です.例えば,打者1の進塁数を変数 b1 に入れているとすると,2塁打ならば

	b1 += 2;


のようにします.なお,このプログラムは結構長くなりますので,間違いの無いように注意して作ってください.

解答例

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

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

main()
{
	srand((unsigned) time(NULL));
	
	int dice1, dice2, sum;
	int b1=0, b2=0;
	
	dice1 = rand() % 6 + 1;
	dice2 = rand() % 6 + 1;
	sum = dice1 + dice2;
	
	printf("My student number: s124099\n\n");
	printf("Dices: %d %d\nBatter1: ", dice1, dice2);
	
	if(dice1==dice2)
		switch(dice1){
			case 1:	printf("HR\n\n");
						b1 += 4;
						break;
			case 2:	printf("3H\n\n");
						b1 += 3;
						break;
			default:	printf("2H\n\n");
						b1 += 2;
						break;
		}
	else if(sum == 7){
		printf("1H\n\n");
		b1 += 1;
	}
	else
		printf("Out\n\n");
	
	dice1 = rand() % 6 + 1;
	dice2 = rand() % 6 + 1;
	sum = dice1 + dice2;
	printf("Dices: %d %d\nBatter2: ", dice1, dice2);
	
	if(dice1==dice2)
		switch(dice1){
			case 1:	printf("HR\n\n");
						b2 += 4;
						b1 += 3;
						break;
			case 2:	printf("3H\n\n");
						b1 += 3;
						break;
			default:printf("2H\n\n");
						b1 += 2;
						break;
		}
	else if(sum == 7){
		printf("1H\n\n");
		b1 += 1;
	}
	else
		printf("Out\n\n");
		
	printf("Run: ");
	
	if(b1+b2<4)
		printf("0\n");
	else if(b1+b2<8)
		printf("1\n");
	else
		printf("2\n");
	
	printf("\n------------------------\n\n");
	
	return(0);
}


Back