在文件sequences.txt中,有100行描述了两行。第一个说明了这个序列中的数量,而第二个包含了这个序列中的数字(数据用一个空格隔开)。例如,前四行是:
5
1 3 6 7 9
5
17 22 27 32 37
你能告诉我如何使用fstream库加载这些数据,以便我能够做一些数学运算,比如计算每个序列的差异或它们的总和吗?我想我必须使用两个数组,一个用于每个序列中的数字量,另一个用于每个序列中的数字。感谢。
答案 0 :(得分:0)
我的代码是一个通用的解决方案,它将把你的文件放在2D锯齿状数组中。您现在拥有最终阵列中的所有数据,您可以根据需要执行任何任务。
文件强>
5
1 3 6 7 9
5
17 22 27 32 37
6
1 2 3 4 5 6
3
13 45 67
使用2D数组获取数据的代码。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string str;
ifstream in("File.txt");
int count = 4; //Your number of test cases here as you said 100 or 200
int *sizes = new int[count]; // all szies for your 1D arrays
int **Array = new int*[count]; //Main 2D array
for (int i = 0; i < count; i++)
{
in>>sizes[i]; //taking size for 1 row
Array[i] = new int[sizes[i]]; //Making arrays
for (int j = 0; j < sizes[i]; j++)
{
in >> Array[i][j]; //getting values of row
}
}
for (int i = 0; i < count; i++)
{
for (int j = 0; j < sizes[i]; j++)
{
cout << Array[i][j] << " "; //Printing Final Array [i,j]
}
cout << endl;
}
//Now you have your final array in Array which is 2D Jagged Array You Can Do What Ever You Want.
for (int i = 0; i < count; i++) //memory release
delete[] Array[i];
delete[] Array;
delete[] sizes;
system("pause");
return 0;
}