前回に引き続き第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は、コンパクトだ。
コメント