0

入力された量が偶数の要素になってしまったとしても、私のコードは if チェックをスキップします。それはおそらく、私が読んでいた章で見逃した、または気付かなかったばかげたものです. ご覧いただきありがとうございます。

#include "std_lib_facilities.h"

    using namespace std;

    int main()
    {
        vector<double> num;
        double numb;

        while(cin>>numb)
            num.push_back(numb);

        sort(num.begin(), num.end());

        if(num.size() <= 2)
            cout << "Need more data." << endl;
        else if (num[num.size()%2] == 0)//even?
        {
            cout << "Median is: " << num[num.size()/2] << endl;
            cout << "Median is: " << num[(num.size()/2)+1] << endl;
        }
        else
            cout << "Median is: " << num[num.size()/2] << endl;

        keep_window_open();

    }
4

2 に答える 2

2

num[num.size()%2]は要素をチェックするか01のサイズに応じてチェックしnumます。つまり、 の長さnumが偶数か奇数か、どちらが かをチェックするということですnum.size() % 2。したがって、小切手は次のようになります。

      else if(num.size() % 2 == 0)//even?
于 2013-06-12T02:35:09.087 に答える
2

このテストを使用しようとしていると思います:

num[num.size()%2] == 0

ベクトルの長さが偶数かどうかを確認するには。しかし、それはそれが行うことではありません - または のをチェックして、それがゼロかどうnum[0]かを確認します。num[1]

あなたがしたい:

 num.size() % 2 == 0
于 2013-06-12T02:35:23.767 に答える