2016-09-29 51 views
-4

所以我正在爲即將到來的測試而練習,而且我很困惑我的一個問題。這是一個兩部分問題,我將首先包括這兩個問題。編寫一個函數,接受一個字符串數組並返回一個double,產生這些字符串的平均長度

1)創建一個函數,該函數接受一個字符串數組並返回一個double。這個double將表示所有字符串的平均長度。

2)創建一個主函數,詢問用戶10個字符串。填充數組後,調用問題1中的函數來計算字符串的平均長度並將結果輸出到控制檯。

這是到目前爲止我的代碼:

void avg(std::string averages[], int size) { 

    double sum = 0; 

    for(int index = 0; index < size; index++) { 

     sum += averages[index]; // Error here, invalid operands to binary expression? 

    } 

    double retVal = sum/size; 
    return retVal; //**I am getting an error here: void function avg should not return a value 

} 

int main() { 

    std:: string myArray[10]; 
    std:: cout << "Please enter 10 strings..."; 

    for(int i = 0; i < 10; i++) { 
    std::cin >>myArray[i]; 

    } 

} 
+2

你忘了提問了。你對這個任務或者你寫的代碼有什麼問題? –

回答

0

sum是一個整數。您已將averages定義爲字符串數組;你不能將字符串添加到整數。嘗試

sum += averages[index].length(); 

而且,您的評論後來的「我在這裏得到一個錯誤:void函數平均不應該返回值」 ......呃錯誤消息告訴你到底是什麼問題;你的函數被定義爲

void avg(std::string averages[], int size) { 
... 
} 

在函數名前面聲明的類型是它的'返回類型'。關鍵字'void'僅僅意味着'這個函數不會返回一個值',所以當您嘗試使用return關鍵字來實際返回一個值時,它就會變得混亂。將其更改爲

double avg(std::string averages[], int size) { 
... 
} 

編輯

要調用的函數,你main()應該是這樣的。我沒有測試過,但它應該工作。

int main() { 
    std::string myArray[10]; 
    std::cout << "Please enter 10 strings...\n"; 

    for(int i = 0; i < 10; i++) { 
     std::getLine(std::cin, myArray[i]); 
    } 

    std::cout << avg(myArray, 10) << "\n"; 
} 
+0

謝謝!這是完美的...我最後的問題是這樣的:我怎麼會在主函數中調用這個avg函數來計算用戶輸入的10個字符串的平均值? –

相關問題