汇总然后平均 txt 文件中每 10 行一次
Summarize then average every 10 lines from a txt file
我有以下代码用于标题中提到的任务:
该程序从 1 列文本文件中读取,其中数字彼此下方。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
double number;
double sum = 0;
ifstream average;
average.open("average.txt");
while (average >> number)
{
for(int i = 0; i < 10; i++)
{
sum = sum + number;
i++;
if (i = 9)
{
cout << sum / 10 << endl;
}
}
{
average.close();
system("pause");
return 0;
}
但不知何故,它不会平均数字,只是将它们全部除以 10。
可能有什么问题?
谢谢
一个可能的解决方案:
int i;
while (average.good()) // only while we are good
{
sum = 0; // you need to clean it
for(i = 0; i < 10; i++)
{
average >> number;
if (!average.good()) break; // if number of lines is not mod10
sum = sum + number;
// i++; you already do that in for loop
}
if (i)
{
cout << sum / i << endl; // only print after each 10 or less
}
}
或者使用单循环:
sum = 0;
int i = 0;
while (average >> number) {
sum = sum + number;
++i;
if (i == 10) {
cout << sum / i << endl;
sum = i = 0;
}
}
if (i) {
cout << sum / i << endl;
}
您可以使用std::deque
轻松实现此目的,因为当您每行达到第十个配额时,您可以轻松地添加和删除数字。
#include <fstream>
#include <deque>
#include <numeric>
int main()
{
std::ifstream read("average.txt");
constexpr unsigned linesToAverage = 10;
std::deque<double> numbers;
double currentNumber = 0.0;
while (read >> currentNumber) {
if (numbers.size() == linesToAverage) {
std::cout << std::accumulate(std::begin(numbers), std::end(numbers), 0.0) / linesToAverage << std::endl;
numbers.pop_back();
}
numbers.push_front(currentNumber);
}
return 0;
}
此代码显示从前十个数字开始的平均值。
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 汇总然后平均 txt 文件中每 10 行一次
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 臂组件:循环只会迭代一次,然后较低误差
- STD :: MAP-如何查找或添加,然后可以在一次搜索中删除项目
- 分叉一次,然后在不同的过程中使用线程?
- 在C++中一次一行地从文本文件中读取int(好的字符,然后转换)时出现问题
- Cython导入只工作一次,然后会出现gcc.bat错误
- 一次接受多个输入,然后一次给出输出
- Boost::asio async_read_some工作一次,然后停止工作,为什么?(要查看使用)
- 对指针向量进行排序一次,然后崩溃并"unable to read memory"
- C++跟踪一个项目一次,然后返回
- 为什么函数立即完成一次循环,然后再次运行