最大の入力ファイルからデータを処理する必要があります。次のような 100,000 行:
2014269619 サリー・クレア・スミス 女性 95
ID 番号、名前 (2 ~ 3 語)、性別、試験の点数です。タブで区切られています。
最大の配列を作成する必要があります。これらの属性ごとに 100,000 の長さ。また、入力ファイル内の最初の数字は、そのファイルの行数になります。そこで、長さ 100,000 の配列を作成します。
配列を設定したら、特定の関数を使用して名前のアルファベット順 (昇順) で名前を並べ替え、出力ファイルに入れます。ただし、この特定の機能を使用する必要はありません。
ここでの私の課題は、指定された関数が名前を並べ替えますが、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
基本的に、次のことについて助けが必要です。
- 入力ファイルから配列にデータを抽出して、並べ替えが個々の配列だけでなくすべての行に適用されるようにします (したがって、行全体が並べ替えられます)。
- int 配列に対して getline を機能させる方法を見つける
- データを出力ファイルに出力しますが、問題にはなりません。
- これはすべて、構造体、ベクトル、マップを使用せずに、配列を使用して行う必要があります。
他のライブラリは問題ありません。