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

问题描述:

所以我正在为即将到来的测试而练习,而且我很困惑我的一个问题。这是一个两部分问题,我将首先包括这两个问题。编写一个函数,接受一个字符串数组并返回一个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

你忘了提问了。你对这个任务或者你写的代码有什么问题? –

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个字符串的平均值? –