C ++如何对一串数字求平均?

时间:2019-07-16 04:32:12

标签: c++ math

我在尝试解决某些问题。

如果我有一串带有空格的数字,例如“ 10 20 30 40”,我有什么办法可以将这些数字加起来并取平均值?

我尝试了下面的代码,但是返回了“ nan”,所以我真的不知道我在做什么错。

for (int i = 0; i < numLength; i++)
{
    num = grades.at(i) - '0';
    total += num;
    countNum++;
}

cout << firstName << " " << lastName << " average: " << (total/countNum) << endl;

2 个答案:

答案 0 :(得分:6)

您可以简单地使用std::istringstream来代替手动解析数据:

#include <string>
#include <sstream>
#include <iostream>

int main()
{
   std::string test = "10 20 30 40";
   int count = 0;
   double total = 0.0;
   std::istringstream strm(test);
   int num;
   while ( strm >> num )
   {
       ++count;
       total += num;
   }
   std::cout << "The average is " << total / count;
}

输出:

The average is 25

答案 1 :(得分:0)

使用std::istringstream解析字符串,例如:

#include <iostream>
#include <string>
#include <sstream>
...

std::istringstream iss(grades);
while (iss >> num) {
    total += num;
    ++countNum;
}
std::cout << firstName << " " << lastName << " average: " << (total/countNum) << std::endl;