C++ 如何使用C+中的调用函数计算均值+;?
这些函数是C++ 如何使用C+中的调用函数计算均值+;?,c++,C++,这些函数是getInputN(),calculateMean()&displayData() 所以说得很清楚,这些是要求 getInputN函数:应接受值的数字,N作为一个整数作为参数,并要求用户输入N number的值。然后,将值的总和返回为双精度 calculateMean函数:应接受值的数目、N和值的总和作为参数。然后将平均值作为双精度返回 displayData函数:应接受平均值作为参数。然后,在屏幕上相应的消息中显示它们。此函数不需要返回值 如果我运行代码,它将显示Average=
getInputN()
,calculateMean()
&displayData()
所以说得很清楚,这些是要求
函数:应接受值的数字,N作为一个整数作为参数,并要求用户输入N number的值。然后,将值的总和返回为双精度getInputN
函数:应接受值的数目、N和值的总和作为参数。然后将平均值作为双精度返回calculateMean
函数:应接受平均值作为参数。然后,在屏幕上相应的消息中显示它们。此函数不需要返回值displayData
#include <iostream>
using namespace std;
int getInputN(int n);
float calculateMean (int n, float sum);
float displayData(double mean);
int i,n;
float sum = 0.0, num[50];
double mean;
int main()
{
getInputN(n);
calculateMean (n, sum);
displayData(mean);
return 0;
}
int getInputN(int n)
{
int i;
float num[50];
//User enter the number of value
cout << "Enter the numbers of data: ";
cin >> n;
//if user input more than 50 numbers
while (n > 50 || n <= 0)
{
cout << "Invalid! Enter the number in range of (1 to 50)." << endl;
cout << "Enter the number of data: ";
cin >> n;
}
for(i = 0; i < n; ++i)
{
cout << i + 1 << ". Enter number: ";
cin >> num[i];
sum += num[i];
}
return n;
}
//function to calculate the mean
float calculateMean (int n, float sum)
{
mean = sum/n;
return mean;
}
//function to display the mean
float displayData (double mean)
{
cout << "Average = " << mean;
}
#包括
使用名称空间std;
intgetinputn(intn);
浮点计算器(整数n,浮点和);
浮动显示数据(双平均值);
inti,n;
浮动总和=0.0,数值[50];
双均值;
int main()
{
getInputN(n);
计算表(n,和);
显示数据(平均值);
返回0;
}
int getInputN(int n)
{
int i;
float num[50];
//用户输入值的数目
cout>n;
//如果用户输入的数字超过50个
而函数getInputN
中的参数intn
隐藏了全局变量n
。这会阻止全局变量被更新,并将sum
除以零(没有显式初始化的gloval变量的默认值)
如果希望使用gloval变量传递数据,则应删除这些参数,因为其中一个(n
,如上所述)有害,而另一个是冗余的
另外,函数displayData
被声明为返回float
,但没有执行任何return
语句。这会调用未定义的行为。我通过将其返回类型更改为void
修复了此问题
#include <iostream>
using namespace std;
int getInputN();
float calculateMean ();
void displayData();
int i,n;
float sum = 0.0, num[50];
double mean;
int main()
{
getInputN();
calculateMean ();
displayData();
return 0;
}
int getInputN()
{
int i;
float num[50];
//User enter the number of value
cout << "Enter the numbers of data: ";
cin >> n;
//if user input more than 50 numbers
while (n > 50 || n <= 0)
{
cout << "Invalid! Enter the number in range of (1 to 50)." << endl;
cout << "Enter the number of data: ";
cin >> n;
}
for(i = 0; i < n; ++i)
{
cout << i + 1 << ". Enter number: ";
cin >> num[i];
sum += num[i];
}
return n;
}
//function to calculate the mean
float calculateMean ()
{
mean = sum/n;
return mean;
}
//function to display the mean
void displayData ()
{
cout << "Average = " << mean;
}
#包括
使用名称空间std;
int getInputN();
float calculateMean();
void displayData();
inti,n;
浮动总和=0.0,数值[50];
双均值;
int main()
{
getInputN();
计算面();
显示数据();
返回0;
}
int getInputN()
{
int i;
float num[50];
//用户输入值的数目
cout>n;
//如果用户输入的数字超过50个
而(n>50 | n函数中使用int getInputN(int n)
中的变量n
,而不是声明的全局n
。因此,使用globaln
(在该点初始化为0之前未初始化)计算mean=sum/n
将导致未定义行为
除以0
错误,导致inf
更多信息:
-
-
此外,函数float displayData(双平均值)
不返回任何值,导致另一个未定义行为
更多信息:
修改代码:
#include <iostream>
using namespace std;
void getInputN();
void calculateMean();
void displayData();
int i,n;
float sum = 0.0, num[50];
double mean;
int main()
{
getInputN();
calculateMean();
displayData();
return 0;
}
void getInputN()
{
int i;
float num[50];
//User enter the number of value
cout << "Enter the numbers of data: ";
cin >> n;
//if user input more than 50 numbers
while (n > 50 || n <= 0)
{
cout << "Invalid! Enter the number in range of (1 to 50)." << endl;
cout << "Enter the number of data: ";
cin >> n;
}
for(i = 0; i < n; ++i)
{
cout << i + 1 << ". Enter number: ";
cin >> num[i];
sum += num[i];
}
}
//function to calculate the mean
void calculateMean ()
{
mean = sum/n;
}
//function to display the mean
void displayData ()
{
cout << "Average = " << mean;
}
此外,如果您不将这些数字用于其他任何事情,那么声明一个float num[50];
是毫无意义的。另外,请注意,不建议使用全局变量和
#include <iostream>
const int maxn = 50;
const int minn = 1;
int main()
{
int n; std::cout << "Enter N : "; std::cin >> n;
while (n < minn || n > maxn) {std::cout << "Invalid. Re-enter N : "; std::cin >> n;}
double sum = 0; int tmp;
for (int i = 0; i < n; i++) { std::cout << "Enter number " << i+1 << " : "; std::cin >> tmp; sum += tmp;}
std::cout << "Average : " << sum/n;
}
通过了解函数的行为,我们可以编写工作良好且根本不使用任何全局变量的实现
#include <iostream>
double getInputN(int n);
double calculateMean(int n, double sum);
void displayData(double mean);
int main()
{
//User enter the number of value
int numEntries;
std::cout << "Enter the numbers of data: ";
std::cin >> numEntries;
//if user input more than 50 numbers
while (numEntries > 50 || numEntries <= 0)
{
std::cout << "Invalid! Enter the number in range of (1 to 50)." << std::endl;
std::cout << "Enter the number of data: ";
std::cin >> numEntries;
}
// Get user input
double sum = getInputN(numEntries);
double mean = calculateMean(numEntries, sum);
displayData(mean);
return 0;
}
double getInputN(int n)
{
double sum = 0.;
for (int i = 0; i < n; ++i)
{
double userInput;
std::cout << i + 1 << ". Enter number: ";
std::cin >> userInput;
sum += userInput;
}
return sum;
}
//function to calculate the mean
double calculateMean(int n, double sum)
{
double mean = sum / n;
return mean;
}
//function to display the mean
void displayData(double mean)
{
std::cout << "Average = " << mean;
}
#包括
双getInputN(intn);
双计算表(整数n,双和);
无效显示数据(双平均值);
int main()
{
//用户输入值的数目
国际货币基金组织;
标准::cout>numEntries;
//如果用户输入的数字超过50个
while(numEntries>50 | | numEntries有哪些错误?停止使用全局变量永远都不会太早。getInputN
中的参数int n
会对全局int n
进行阴影处理。因此getInputN
不会更新全局变量,它只会返回一个值。因此,当调用calculateMean(n,sum)时
使用全局n
作为参数,它没有任何有效值。您的函数有返回类型,您应该在调用代码中使用它们。calculateMean除以一个和(您从未向其添加任何内容,因此它为零)由一个你从未初始化过的数字n。看起来你根本不知道如何使用返回值。我得到的输出是Average=inf。答案应该是输入数字的平均值。我认为参数和返回值都搞乱了。全局n
有静态存储持续时间,so它默认初始化为零。(8.5初始值设定项9)mean=sum/n
调用未定义的行为,因为它被零除。(N3337 5.6乘法运算符)@mikeca我错了,我现在要修改它。哦,好的,我明白了……实际上在问题中,我的讲师说了三个函数getInput(n),calculateMean()&displayData接受参数。那么,这在代码中是如何实现的呢?顺便说一句,非常感谢您的回答!非常感谢。@daisy98如果您对函数的签名应该是什么以及它们应该如何工作有其他要求,请编辑实际问题以包含它们。否则人们将不得不猜测函数的预期行为是。@daisy98“实际上在问题中,我的讲师说getInput(N)、calculateMean()和displayData这三个函数接受参数。“但是为什么呢?我的意思是,sum
、mean
和N
都是全局变量,可以被任何函数读取,所以float calculateMean(整数n,浮点和)
Enter N : 3
Enter number 1 : 25
Enter number 2 : 97
Enter number 3 : 111
Average : 77.6667
#include <iostream>
double getInputN(int n);
double calculateMean(int n, double sum);
void displayData(double mean);
int main()
{
//User enter the number of value
int numEntries;
std::cout << "Enter the numbers of data: ";
std::cin >> numEntries;
//if user input more than 50 numbers
while (numEntries > 50 || numEntries <= 0)
{
std::cout << "Invalid! Enter the number in range of (1 to 50)." << std::endl;
std::cout << "Enter the number of data: ";
std::cin >> numEntries;
}
// Get user input
double sum = getInputN(numEntries);
double mean = calculateMean(numEntries, sum);
displayData(mean);
return 0;
}
double getInputN(int n)
{
double sum = 0.;
for (int i = 0; i < n; ++i)
{
double userInput;
std::cout << i + 1 << ". Enter number: ";
std::cin >> userInput;
sum += userInput;
}
return sum;
}
//function to calculate the mean
double calculateMean(int n, double sum)
{
double mean = sum / n;
return mean;
}
//function to display the mean
void displayData(double mean)
{
std::cout << "Average = " << mean;
}