前回に引き続き第3章の練習問題。練習問題6を引用する。
ユーザーに整数値を3つ入力させ、それらの値をコンマ(,)で区切られた数列として出力するプログラムを記述する。ユーザーが、10 4 6と入力した場合、出力は4, 6, 10になる。2つの値が同じである場合あは、一緒に並べる。つまり、4 5 4という入力から4, 4, 5という出力が得られる。
私の回答は、下記の通り。
#include "../../std_lib_facilities.h"
int main() {
int val1, val2, val3, temp;cout << "整数を3個入力してください\n";
cin >> val1 >> val2 >> val3;if (val1 > val2) {
temp = val1;
val1 = val2;
val2 = temp;
}if (val2 > val3) {
temp = val2;
val2 = val3;
val3 = temp;
}if (val1 > val2) {
temp = val1;
val1 = val2;
val2 = temp;
}cout << val1 << "," << val2 << "," << val3 << "\n";
return 0;
}
値を3つ入力しておいてから、val1、val2、val3を並びかえて、出力するという方法である。
一方、回答例http://www.stroustrup.com/Programming/Solutions/Ch3/e3-6.cppは、場合分けで、smallest、middle、largestの値を決定するという方法だ。私の回答は、ちょっと勘違いして、ミスをしやすいことは確かだ。でも回答例も、間違いやすい気もする。
コメント