从文本文件读取到矢量中
Read from a text file into a vector
我很难理解为什么我的代码不起作用。问题在于,当我将文本文件中的值传递到等级变量中时。我不明白为什么这是错误的。除此之外,我的代码中的其他一切都很好,但我还是包含了所有内容。
string fileName;
cout << "Program that takes data from file and calculatenmean and standard deviation and put it in file out.txtn";
cout << "Enter the input file name ";
cin >> fileName;
double grade;
ifstream inData;
inData.open(fileName.c_str());
// Declare vector<double> vecx
vector<double> vecx;
// read data from input file to vector vecx,
while(inData >> grade)
{
vecx.push_back(grade);
}
inData.close();
// keep track how many elements you read from file
// When you done with reading from file, close stream inData
这是完整的代码,以防你感兴趣。
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
string fileName;
cout << "Program that takes data from file and calculatenmean and standard deviation and put it in file out.txtn";
cout << "Enter the input file name ";
cin >> fileName;
double grade;
ifstream inData;
inData.open(fileName.c_str());
// Declare vector<double> vecx
vector<double> vecx;
// read data from input file to vector vecx,
while(inData >> grade)
{
vecx.push_back(grade);
}
inData.close();
// keep track how many elements you read from file
// When you done with reading from file, close stream inData
// read element by element in vector vecx and calculate sum;
double sum=0;
double average;
for (int i=0; i < vecx.size(); i++)
sum=sum+vecx[i];
average=sum/(vecx.size());
// sum divide by number of elements to find mean(average)
//again read element by element and calculate
//square of difference between element and mean
//calculate sum of squares of differences
//divide by number of elements and
//take square root - you got the standard deviation
sum=0;
double variance, stdev;
for (int i=0; i < vecx.size(); i++)
sum=sum+(vecx[i]-average*vecx[i]-average);
variance=sum/(vecx.size());
stdev=sqrt(variance);
//open output stream
ofstream outData;
outData.open("out.txt");
//output mean and standard deviation
cout << "Average is " << average << endl;
cout << "Standard deviation is " << stdev << endl;
//close stream
outData.close();
}
我觉得自己像个白痴,因为我不明白为什么这不起作用。。。我应该能够弄清楚,但我没有。
C++遵循先例的正常数学顺序。
此行:
sum=sum+(vecx[i]-average*vecx[i]-average);
看起来不正确。乘法发生在减法之前,所以它是这样计算的:
sum=sum+((vecx[i]-(average*vecx[i]))-average);
但大概你的意思是:
sum=sum+((vecx[i]-average)*(vecx[i]-average));
您可能有兴趣查看优先顺序的完整列表。
您永远不会将数据写入文件。使用ofstream outData
而不是std::cout
。否则,您只会将输出发送到控制台。
//open output stream
ofstream outData;
outData.open("out.txt");
//output mean and standard deviation
outData << "Average is " << average << endl;
outData << "Standard deviation is " << stdev << endl;
//close stream
outData.close();
相关文章:
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 为什么 getline() 不读取文本文件中的所有内容?
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 如何读取文本文件中的数据并为每列 c++ 分配数组
- 如何仅读取文本文件中的第一个值
- Getline在读取文本文件时有一种奇怪的行为
- 读取文本文件时的浮点确定性
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 如何在不知道大小的情况下读取文本文件并存储到数组中
- 从文件中读取文本时出现编码问题
- Qt读取文本文件的一些信息
- 读取文本文件,C++
- 如何读取文本文件的第二、第三和第四行.C++
- 我想读取文本文件中的所有内容(但文本文件中只有一个双精度值),转换为双精度值并返回值
- 使用 stdin 读取文本文件,然后遍历多个数组
- 使用 c++ ifstream 读取文本文件问题
- C++读取文本文件并存储数据
- 读取文本文件时 seekg() 的奇怪偏移量
- 在C++中使用 Visual Studio 读取文本文件时遇到问题
- 无法读取文本文件中的每个单词