第3章 練習問題6

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

 前回に引き続き第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の値を決定するという方法だ。私の回答は、ちょっと勘違いして、ミスをしやすいことは確かだ。でも回答例も、間違いやすい気もする。