编写一个函数,接受一个字符串数组并返回一个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];
}
}
答
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个字符串的平均值? –
你忘了提问了。你对这个任务或者你写的代码有什么问题? –