C++ C+中的数学计算+;
我想用这个公式写一个函数 列一张你曾祖父去世的年龄表 将每个数字本身相乘 把它们加在一起 取结果的平方根 除以二 这是一个例子:C++ C+中的数学计算+;,c++,algorithm,C++,Algorithm,我想用这个公式写一个函数 列一张你曾祖父去世的年龄表 将每个数字本身相乘 把它们加在一起 取结果的平方根 除以二 这是一个例子: predictAge(65, 60, 75, 55, 60, 63, 64, 45) === 86 这是我写的代码: #include <math.h> #include <iostream> #include <vector> #include <cmath> int predictAge(std::vector&l
predictAge(65, 60, 75, 55, 60, 63, 64, 45) === 86
这是我写的代码:
#include <math.h>
#include <iostream>
#include <vector>
#include <cmath>
int predictAge(std::vector<int> ages)
{
for(int i = 0; i < ages.size(); i++) {
int Produc = ages[i] * ages[i];
int Sum = Produc + Produc;
int Squar = sqrt(Sum);
int Final = Squar / 2;
std::cout << Final << "\n";
}
}
int main() {
std::cout << predictAge({65, 60, 75, 55, 60, 63, 64, 45});
return 1;
}
#包括
#包括
#包括
#包括
整数预测年龄(标准::向量年龄)
{
对于(int i=0;i
int预测年龄(标准::向量年龄)
{
整数和=0;
对于(int i=0;i
您应该注意输入数据检查和错误处理。如果您详细说明了正确的算法,您就无法正确实现它。您需要RSS(平方根和)除以std::vector
中所有年龄段中的两个。既然RSS是一种常见的算法,为什么不编写一个函数来计算所有值的RSS,然后将返回值除以二来完成算法呢
您可以按如下方式实现该功能:
#include <iostream>
#include <vector>
#include <cmath>
double rss (std::vector<int>& ages)
{
double sum = 0.;
for (const auto& a : ages)
sum += a * a;
return sqrt (sum);
}
int main (void) {
std::vector<int> ages { 65, 60, 75, 55, 60, 63, 64, 45 };
std::cout << static_cast<int>(rss(ages) / 2.) << '\n';
}
如果您有进一步的问题,请仔细检查并告诉我。有人能帮忙吗?您没有描述您的问题。您需要什么帮助?(请详细描述您一直坚持的问题。)查看您公开的代码,您没有遵循您的概念(或要求)从将它们全部相加开始。int-Sum=Produc+Produc;
不是对所有值求和的方式。提示:在循环之前定义int-Sum=0;
,使其在迭代之间保持其值,然后在内部修改。接下来,sqrt
和/2
应该发生在循环之后(因为这样做的是求和,而不是每个数字)。接下来,您必须决定打印结果的位置。您可以在predictAge
(那么返回类型必须是void
,并且std::cout确切地说,Scheff。它比我从C++知道的要高得多哦,对不起,它实际上非常简单。函数参数std::vector&ages
只是将std::vector
从main()
传递到函数rss())
进行处理。然后在rss()
内部,循环只在每个值上循环(循环变量是a
(ages的缩写),然后将其自身相乘,将结果添加到sum
。循环后返回sum
的平方根。您可以将for
循环重写为for(auto-iter=ages.begin();iter!=ages.end();iter++)
其中iter
将是指向每个元素的指针。因此,您可以sum+=*iter**iter;
其余元素都是相同的。
$ ./bin/rss_ages
86