所以我正在练习即将进行的测试,而且我对我的一个问题感到难过。这是一个两部分问题,我将首先包括这两个问题。
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];
}
}
答案 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";
}