1

プログラムで 2 つのテキスト ファイルを連結することができたので、作成したテキスト ファイルを番号順に並べ替える必要があります。たとえば、Test1.txt に数字 1、2、3、4、5 が含まれ、Test2 に数字 4、5、6、8 が含まれているとします。myoutput.txt には 1、2、3、4、4、5、5 が必要です。 6,8。私はソートアルゴリズムにあまり詳しくありません。出力ファイルを読み取って並べ替え、出力ファイルに再度書き込む必要があると思います。

これが私の現在のコードです:

#include <iostream>
#include <fstream>
#include <ostream>

using namespace std;

int main()
{
    //collecting integers from first text file//
   ifstream file1("test1.txt", ios::in | ios::binary);
   if(!file1)
   {
      cout << "Cannot open input test file 1.\n";
      return 1;
   }

   // collecting integers from second text file//
   ifstream file2("test2.txt", ios::in | ios::binary);
   if(!file2)
   {
      cout << "Cannot open input test file 2.\n";
      return 1;
   }

   //outputting the concactonated file to myoutput.txt//

   ofstream cout("myoutput.txt", ios::out | ios::binary);

   if(!cout)
   {
      cout << "can't open output file ";
      return 1;
   }

   cout << file1.rdbuf();
   cout << " " << flush;
   cout << file2.rdbuf();

   ifstream sortfile("myoutput.txt, )

   return 0;
}
4

3 に答える 3

7

単一の数値を整数に読み取り、それらをstd::vectorにプッシュしてから、 std ::sortを使用してソートし、出力ファイルに書き込みます。これらの各ステップは些細なことであり、多数の SO の質問でカバーされています。

于 2012-09-11T06:20:29.753 に答える
2

そのようなファイルからの並べ替え配列には、マージ並べ替えを使用する必要があります。このhttp://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Sorting/mergeSort.htmでマージ ソート アルゴリズムを見てみましょう。この http://www.c.happycodings.com/Beginners_Lab_Assignments/code27.htmlのサンプルソースコード

于 2012-09-11T06:21:24.837 に答える
1

このような状況では、マージソートを使用する方がよいと思います。両方のファイルから1つの数値を読み取り、それらを比較して、最小のものを出力ファイルに挿入します。このアプローチにより、時間の複雑さが軽減されると思います。

于 2012-09-11T07:09:24.417 に答える