2013-01-20 41 views
1

我想寫第二個函數來計算主函數中的整數向量。我的矢量是這樣設置的。寫一個函數來查找整數的位數

int inputinfo; 
cout << "\nPlease enter in scores: "; 
cout << "\nEnd your input with ctrl-z\n"; 
vector<int> scores; 
    while (cin >> inputinfo) 
    { 
     scores.push_back(inputinfo); 
    } 

這是我的中位數公式(我不確定是否正確)。我想爲中位數製作一個函數,然後將其返回到主函數以查找矢量的中位數。

double median; 
    size_t size = scores.size(); 

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

    if (size % TWO == 0) 
    { 
     median = (scores[size/2 - 1] + scores[size/2])/2; 
    } 
    else 
    { 
     median = scores[size/2]; 
    } 

感謝您的任何幫助。

+8

你問如何使和調用一個函數? – chris

+1

由於您的中位數是一個浮點數,您可能需要中位數=(分數[size/2 - 1] +分數[size/2])/2.0;避免截斷。 – user515430

回答

2

檢查你的代碼是否失敗,如果你沒有或只有一個數字在向量中。您可以使用

if (size==0) throw "Vector empty"; 
if (size==1) return scores[0]; 

在if(size%TWO == 0)行之前。

+6

沒有必要爲1的大小做一個特殊情況。 –

0

只是一個簡短的回顧:中值意味着排序列表中的中間條目,對吧? 所以你搜索

//your array has a even size, so you want the middle of it 
if (size % TWO == 0) 
{ 
median = scores[size/2 - 1]; 
} 
// your array has a odd size, so you average 
else 
{ 
median = (scores[size/2 - 1] + scores[size/2])/2; 
}