编写一个接受字符串数组并返回double的函数,生成这些字符串的平均长度

时间:2016-09-29 22:44:18

标签: c++ arrays string

所以我正在练习即将进行的测试,而且我对我的一个问题感到难过。这是一个两部分问题,我将首先包括这两个问题。

1)创建一个接受字符串数组并返回double的函数。这个双精度表示所有字符串的平均长度。

2)创建一个MAIN函数,询问用户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];

    }

}

1 个答案:

答案 0 :(得分:0)

sum是一个整数。您已将averages定义为字符串数组;你不能将字符串添加到整数。尝试

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

此外,您的评论稍后“我在这里收到错误:void function avg不应该返回值”......好的错误信息正在告诉您究竟是什么问题;您的函数定义为

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

在函数名称之前声明的类型是'return type'。关键字'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";
}