2016-09-29 4 views
-4

私は来ているテストのために練習しています。私は自分の質問の一つに困惑しています。これは2つの部分からなる質問です。私は両方の質問を最初から取り上げます。文字列の配列をとり、その文字列の平均長さを返すdouble型を返す関数を書く

1)文字列の配列を取り、doubleを返す関数を作成します。この2倍は、すべての文字列の平均長さを表します。

2)ユーザーに10個の文字列を要求するMAIN関数を作成します。配列がいっぱいになったら、Question 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を定義しました。整数に文字列を追加することはできません。また、あなたのコメントは、後に「私はここでエラーを取得しています。void関数AVGは値を返すべきではない」

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

をお試しください...よくエラーメッセージは、問題がある正確に何を語っています。あなたの関数は次のように定義されます

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

ありがとう!それは完璧に動作します...私の最後の質問はこれです:ユーザーが入力する10文字列の平均を計算するために、main関数でこのavg関数をどのように呼び出すのですか? –

関連する問題