package j1.lesson12;
import java.io.*;
/**
* 課題1203 - 解答例.
* @author arakawa
* @version $Id: LeagueStanding_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
*/
public class LeagueStanding {
/**
* 3チームから成るリーグ戦の成績から、勝ち点を計算するプログラム。
* 以下の擬似コードで表される。
* <pre>
* プログラム全体
* 得失点のテーブル = 3x3 の新しい配列(int[])
* for i = 0 to 1
* print "チーム" i "の成績", 改行
* for j = i + 1 to 2
* print " チーム" j "との得失点差:"
* score = コンソール入力 (int)
* 該当する得失点のテーブルを埋める
* victories = count-victories(得失点のテーブル)
* for i = 0 to 2
* print "チーム" i ": "
* print "勝ち点" victories[i] ", "
* print 改行
* </pre>
* @param args 無視される
* @throws IOException 入力中に例外が発生した場合
*/
// プログラム全体
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 得失点のテーブル = 3x3 の新しい配列(int[])
int[][] standing = new int[3][3];
// for i = 0 to 1
for (int i = 0; i <= 1; i++) {
// print "チーム" i "の成績", 改行
System.out.println("チーム" + i + "の成績");
// for j = i + 1 to 2
for (int j = i + 1; j <= 2; j++) {
// print " チーム" j "との得失点差:"
System.out.print(" チーム" + j + "との得失点差:");
// score = コンソール入力 (int)
int score = Integer.parseInt(reader.readLine());
// 該当する得失点のテーブルを埋める
standing[i][j] = score;
standing[j][i] = -score;
}
}
// victories = count-victories(得失点のテーブル)
double[] victories = countVictories(standing);
// for i = 0 to 2
for (int i = 0; i <= 2; i++) {
// print "チーム" i ": "
System.out.print("チーム" + i + ": ");
// print "勝ち点" victories[i] ", "
// print 改行
System.out.println("勝ち点" + victories[i]);
}
}
/**
* 得失点のテーブルより、各チームごとの勝ち点を計算する。
* 以下の擬似コードで表される。
* <pre>
* count-victories(standing)
* victories = standing の長さ(1次元分)を持つ新しい配列 (double[])
* for i = 0 to victories の長さ - 1
* for j = 0 to victories の長さ - 1
* if i と j が同じ
* 何もしない
* else if standing[i][j] が0
* victories[i] を 0.5 増やす
* else if standing[i][j] が0より大きい
* victories[i] を 1.0 増やす
* victories を返す
* </pre>
* @param standing 得失点のテーブル
* @return 各チームごとの勝ち点
*/
// count-victories(standing)
public static double[] countVictories(int[][] standing) {
// victories = standing の長さ(1次元分)を持つ新しい配列 (double[])
double[] victories = new double[standing.length];
// for i = 0 to victories の長さ - 1
for (int i = 0; i < victories.length; i++) {
// for j = 0 to victories の長さ - 1
for (int j = 0; j < victories.length; j++) {
// if i と j が同じ
if (i == j) {
// 何もしない
}
// else if standing[i][j] が0
else if (standing[i][j] == 0) {
// victories[i] を 0.5 増やす
victories[i] += 0.5;
}
// else if standing[i][j] が0より大きい
else if (standing[i][j] > 0) {
// victories[i] を 1.0 増やす
victories[i] += 1.0;
}
}
}
// victories を返す
return victories;
}
}
|