第3章 練習問題10

  • 投稿日:
  • by
  • カテゴリ:

 前回に引き続き第3章の練習問題。練習問題10を引用する。

 以下に示すように、演算に続いて2つのオペランドを受け取り、結果を出力するプログラムを記述する。

 + 100 3.14
 * 4 5

 入力された演算はoperationという名前の文字列変数に読み込み、たとえばif (operation==”+”)のように、if文を使ってユーザーが望んでいる演算を特定する。オペランドはdouble型の変数に読み込む。これを+、-、*、/、plus、minus、mul、divの8つの演算に対して実装する。

 私の回答は、下記の通り。

#include "../../std_lib_facilities.h"

int main() {
    string operation;
    double val1,val2;

    cout << "演算、数値2個入力してください\n";
    cin >> operation >> val1 >> val2;

    if (operation == "+")
        cout << val1 + val2 << "\n";
    else if (operation == "-")
        cout << val1 - val2 << "\n";
    else if (operation == "*")
        cout << val1 * val2 << "\n";
    else if (operation == "/") {
        if (val2 == 0)
            cout << "0では割り算できません\n";
        else
            cout << val1 / val2 << "\n";
    } else if (operation == "plus")
        cout << val1 + val2 << "\n";
    else if (operation == "minus")
        cout << val1 - val2 << "\n";
    else if (operation == "mul")
        cout << val1 * val2 << "\n";
    else if (operation == "div") {
        if (val2 == 0)
            cout << "0では割り算できません\n";
        else
            cout << val1 / val2 << "\n";
    }
    else
        cout << "理解できない演算です\n";

    return 0;
}

 何の芸もない、ダラダラしたコードである。でも、わかりやすい。一方、回答例http://www.stroustrup.com/Programming/Solutions/Ch3/e3-10.cppは、コンパクトだ。