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