2013-07-15 18 views
2

我有一個練習,我應該輸入多個以零結束的數字,然後對它們執行不同的計算。到目前爲止,我創建了一個do..while用於存儲數字的循環。我被告知,如果沒有陣列,這是可能的,如果那是錯的,請馬上告訴我。我需要做的功能是將所有數字相加,找到最高數字和第二高數字,以及所有數字的中間(平均)值。 我認爲我應該使用不同的庫,也可能有不同的選項。 請幫我理解不同的庫以及如何使用它們。 我在網上找到的搜索結果沒有給我我找到的答案,因爲我找不到類似的問題。 這是我到目前爲止的代碼:需要多個數字並執行不同作業的C++函數

#include<iostream> 
#include<string> 

using namespace std; 

int sumCalc (int); 
int midValCalc (int); 
int secHighCalc (int); 
int highestCalc (int); 
void printCalc(); 


int main() { 

    int nums; 
    cout << "Input numbers, quit with 0: "; 

    do { 
     cin >> nums; 
     cout << nums << " "; // This is just to see the result  
    } 
    while (nums != 0); 

    return 0; 
} 

什麼是錯的這個附加功能?

int sumCalc (int total) { 

total = 0; 
while (nums != 0) { 
    total += nums; 
} 

return nums; 

}

+0

當你說「中等價值」是指你的中位數還是平均值? – Beta

+6

我確實希望沒有人提供完整的解決方案,坦率地說,從長遠來看,這根本無助於OP。 – PeterK

+1

對不起,是這個意思。 – Sociopaten

回答

5

我不認爲你需要的任何不尋常的庫。

想想你如何在精神上計算這些東西。例如,如果您想總結我讀給您的數字列表,您只需跟蹤運行總數,並在添加它時忘記每個數字 - 這樣只需要一個變量。如果你想跟蹤輸入的最大數字,你只需記住迄今爲止見過的最大數字,然後比較新數字。

你也許可以解決這些問題。

+0

當我嘗試從心理上對sum函數進行繪圖時,我得到了這個:int sumCalc(int num){sum_alc(int num){int_alpha_count = 0,count = 0; count ++; count = sum; 歸還金額; } – Sociopaten

+1

@Sociopaten最好先在紙上寫下一個示例問題,然後寫下你的解決方案。例如,如果我向你讀出一個數字列表:5,然後是3,然後是6,然後是2,那麼當你聽到數字時,你會在紙上記錄什麼,以便計算最後的平均值? – TooTone

1

如果你需要得到的平均值和最高和第二高的數字,你並不需要一個數組(你不需要存儲的數字)

本質上講,你可以跟蹤的和最高用戶輸入的第二高的數字,如果用戶輸入的數字高於這些數字,則可以相應地進行調整。

至於平均數,您還可以保留一個運行總數和計數(輸入的數字),您可以隨時用它來計算平均值。

相關問題