AIZU ONLINE JUDGE

AOJ ITP1 7_A(Grading)を解く

AOJ_ITP1_7_A

Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の7_A問題をC++とPython で解いてみました。

ITP1 のトピック7では、再び構造化プログラムについて学びます。「繰り返し処理や配列を組み合わせることで、構造化プログラミングの理解を深めます。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。

問題(7_A: Grading)

問題はリンク先をご覧ください。

AOJ ITP1 7_A問題:Grading

繰り返し、条件判定を行う問題となります。

解答案

C++ プログラム例(ITP1 7_A)

プログラム全体の構造は、5_A と同じになります。終了条件(m、f、r がすべて -1)を満たすまで、定義された手順で成績を判定して出力を繰り返します。

#include <iostream>

using namespace std;

int main()
{
	int m, f, r;

	while (1) {
		cin >> m >> f >> r;
		if ((m == -1)&&(f == -1)&&(r == -1)) {
			break;
		}

		if ((m == -1)||(f == -1)) {
			cout << "F" << endl;
		} else if (m + f >= 80) {
			cout << "A" << endl;
		} else if (m + f >= 65) {
			cout << "B" << endl;
		} else if (m + f >= 50) {
			cout << "C" << endl;
		} else if (m + f >= 30) {
			if (r >= 50) {
				cout << "C" << endl;
			} else {
				cout << "D" << endl;
			}
		} else {
			cout << "F" << endl;
		}
	}

	return 0;
}

Python プログラム例(ITP1 7_A)

Python も、C++ 版と同じ構造としました。

while True:
    m, f, r = map(int, input().split())
    if m == -1 and f == -1 and r == -1:
        break

    if m == -1 or f == -1:
        print("F")
    elif m + f >= 80:
        print("A")
    elif m + f >= 65:
        print("B")
    elif m + f >= 50:
        print("C")
    elif m + f >= 30:
        if r >= 50:
            print("C")
        else:
            print("D")
    else:
        print("F")

上記プログラムは、すべて AOJ で「AC(Accepted=正解)」と判定されます。

最後に

トピック7では、いままで学んだことを組み合わせて使います。文法を学ぶための Toy プログラムから、実用面を意識したプログラムを書けるようになってきました。

引き続き、ITP1 の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA