从文件中读取第11列数字并求平均值?(c++)
Read 11th coloumn of numbers from a file and average it?(c++)
这是我的初学者c++作业,我有一个由12列数字和50行组成的文件。
我被要求找到第11列数字的平均值,并将其显示在标准输出中。
这是一个初学者课程,所以不允许像矢量这样的高级主题。
我试图为每个列制作12个变量,并使用while循环读取第11列,但不知道如何将第11列的所有数字添加到该变量中。
我使用的while循环是这样的:
while(inputfile >> col1 >> col2>> col3>> col4>> col5>> col6>> col7>>
col8>> col9>> col10>> col11>> col12 )
{ cout<< col11 << endl; }
附带说明:上面所有的col都是int变量。inputfile
是ifstream
文件对象
上面的循环会打印出整列11,但我不知道如何将50行的整列11相加(即50个数字)以找到平均值(将总数除以50)
以上方法也可能是错误的
在这件事上的任何帮助都将不胜感激。
希望很快得到回应。
提前感谢。:)
由于唯一的答案是错误的,并且注释可能缺少一条重要线索。。。
您需要保持collomn 11个值的运行总数。我也会跟踪计数,尽管在您的情况下,您可以跳过它并硬编码值50
。所以你需要的是:
int total = 0;
int count = 0;
然后在你的阅读循环中:
while (...) {
total += col11; // keep a running total
++count; // add 1 to count
}
然后为了计算平均值,你把一个除以另一个。
但是,这有点棘手。如果直接执行,则将一个int
除以另一个int
,得到截断为int
的结果。例如,1/2
会给你0
,这不是你的意思(0.5
)。
在除法完成之前,您需要使用强制转换将至少一个值转换为double
:
double average = static_cast<double>(total) / count;
请参阅此处的完整代码。
解决除法问题的其他方法是首先将total
或count
存储为double
,尽管我发现这很误导,因为它们实际上是整数,或者如果你坚持直接使用50,你可以只使用average = total / 50.0
(50.0
是double
的值)。
由于您是初学者,我还将花点时间建议您不要使用using namespace std;
和endl
,这不仅是出于性能原因,还可以通过将写换行和刷新流这两个不相关的操作分离开来,使代码更加清晰。
使用变量存储总和和计数,并获得平均
int sum = 0;
int count = 0;
double average = 0;
cout << "Calculating Average for: n";
while(inputfile >> col1 >> col2 >> col3 >> col4 >> col5
>> col6 >> col7 >> col8 >> col9 >> col10
>> col11 >> col12 ) {
cout << col11 << " ";
sum += col11;
++count;
}
cout << " n";
average = static_cast<double>(sum)/count;
cout << "Sum: " << sum << "n";
<< "Count: " << count << "n";
<< "Average: " << average << endl;
- 计算数组c++的平均值
- 计算平均值,不包括上次得分
- 彩色图像的卤化物处理平均值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 按平均值替换数组中的元素
- 如何返回多个矢量对象的平均值?C++
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 制作具有平均值的随机数生成器
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 如何使用对象制作分数列表并获得平均值
- 浮点格式数组的平均值
- 在二叉搜索树C++中计算平均值
- C 复合赋值运算符 ^= 平均值
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- 我可以计算多线程数的平均值吗?
- 计算另一个图像像素满足条件的像素值的平均值
- 做一个unordered_multimap键的平均值是更好的方法吗?
- 使用数学地板找到平均值
- 从文件中读取成绩并将平均值输出到另一个文件C++