我需要处理来自最大输入文件的数据。100,000 行,如下所示:
2014269619 Sally Clare Smith 女 95
这些是身份证号、姓名(2 或 3 个字)、性别和考试成绩。由制表符分隔。
我必须创建一个最大值数组。每个属性的长度为 100,000。此外,输入文件中的第一个数字将是该文件中的行数。所以,我创建了长度为 100,000 的数组。
一旦我设置了一个数组,我将使用给定的函数按 Name 的字母字符串顺序(升序)对名称进行排序,然后将它们放入输出文件中。但是,我不需要使用此特定功能。
我的挑战是,尽管给定函数对姓名进行排序,但它不会将 ID、性别和分数与姓名一起移动,从而导致数据库无用。
我尝试按以下方式对第一部分(设置数组)进行操作,但这似乎是错误的:
#include <iostream>
#include <fstream>
using namespace std;
void ordering_sort( double x[], int length)
{
int i, j, k;
double t;
for (i=0; i<length-1; ++i) {
k = i; //find next smallest elm, x[k]
for (j=i+1; j< length; ++j)
if (x[k] > x[j]) k = j;
//swap x[i] with x[k]
t = x[i]; x[i] = x[k]; x[k] = t;
}
}
int main () {
ifstream fin;
ofstream fout;
fin.open("input.txt");
fout.open("output.txt");
if (fin.fail()) {
cout << "Fail to open inout.txt" << endl;
exit(1);
}
int ID [100000];
string name [100000];
string gender [100000];
int score [100000];
int y = 0;
// In the following part, I am trying to extract the information into the different arrays,
// one by one, increasing the number of the element from 0 up till x.
// Problem is that getline does not work for int arrays but I must use int.
for (int y=0 ; y<x, y++) {
getline(fin, ID [y], '\t'); // This does not work.
getline(fin, name [y], '\t');
getline(fin, gender [y], '\t');
getline(fin, score [y], '\t'); //This does not work either.
break;
}
ordering_sort( name, int length)
// trying to use the function, which will not work as of now
基本上,我需要帮助:
- 将输入文件中的数据提取到数组中,确保排序将应用于每一行,而不仅仅是单个数组(因此整行将被排序)
- 找到一种方法让 getline 为 int 数组工作
- 我会将数据输出到输出文件中,但这应该不是问题。
- 所有这些都必须使用数组来完成,而不是使用结构、向量、映射。
其他图书馆都很好。