我遇到了一些麻烦,我正在进行统计假设检验。我可以在纸上完成所有计算,但是从文件读取到数组时遇到了麻烦。
以下是我需要的数字,它们已经完全包含在文本文件input1.txt中。
14
0.5923 0.58 0.6008 0.6117 0.6295 0.6088 0.6148 0.6369 0.6372 0.6241 0.6034 0.6108 0.591 0.601
109.31 110.13 108.9 108.96 108.86 109.17 109.29 108.62 109.06 108.61 109.83 110.48 111.53 111.02
我想从第一行定义数组大小为14,然后是前14位数和第二行14的两个单独数组。如果这有意义,我需要从文本文件填充而不是由用户。
目前我只能将它读入所有数据到文件末尾。我需要它来阅读每一行到我想的结尾?
非常感谢任何帮助。
这是我到目前为止所拥有的。
#include "std_lib_facilities.h"
#include <cctype>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int array_size; //I want this to be 14, read from the first line of txt file
double * array1;
double * array2;
ifstream fin("input1.txt"); //opening an input stream for file
if (fin.is_open())
{
cout << "File opened" << endl;
cin >> array_size;
cout << "N = " << array_size << endl;
array1 = new double[array_size]; //allocate memory for arrays
array2 = new double[array_size];
for (int i = 0; i < array_size; ++i) //fill array1
cin >> array1[i];
for (int i = 0; i < array_size; ++i) //fill array2
cin >> array2[i];
cout << "Arrays are below" << endl << endl;
cout << "Additive ";
for (int i = 0; i < array_size; ++i)
cout << array1[i] << ' ';
cout << endl;
cout << "Yield ";
for (int i = 0; i < array_size; ++i)
cout << array2[i] << ' ';
}
else
{
cout << "File could not be opened." << endl;
}
fin.close();
return 0;
}
答案 0 :(得分:1)
您想要从文件中读取,但您使用cin,它从标准输入读取。 只需将cin更改为已打开文件流的名称 - fin ;)