2017-04-18 24 views
1

私はコード作成を学習して面白い課題を発見しましたが、どこから解決するかわかりません。だから私はいくつかのタイトルとコメントが正しいタイトルの下に配置する必要があるファイルがあります。したがって、入力の最初の行には、タイトルの数を決定する数字Nが含まれています。各行は一意の記事ID(整数)で始まり、その後に引用符で囲まれたタイトルが続きます。タイトルがなくなると、コメントが与えられます。最初はタイトルIDとコメント(1つの単語)がありますが、コメントは同じIDに対して繰り返されることがあります。ファイルの構造は次のとおりです。C++ファイルから読み込んでソートしたコンテンツを出力

<N>     
<ID1> "<Title1>" 
...     
<IDN> "<TitleN>" 
<ID1> <Comment1> 
...     
<IDK> <CommentK> 

出力ファイルでは、各タイトルには2つの行があります。最初はタイトル用、もう1つはコメント用です。タイトルは昇順でなければなりません。コメントは逆の順序で(最初の最新コメント)出力ファイルの構造のようになります。

<Title1> 
<Comment11> ... < CommentK1> 
... 
<TitleN> 
<Comment1N> ... < CommentLN> 

例:

input: 

3 
1 "This is some title" 
3 "Another title" 
2 "And one more" 
1 COmment 
1 Another 
3 Great 
2 Awesome 
3 Lucky 
2 Stanley 

output 

This is some title 
Another COmment 
And one more 
Stanley Awesome 
Another Title 
Lucky Great 

私は今..私はに配列を使用すべきで始めるためにはありませんデータをメモリに保存してから正しいパターンでソートしようとするか、テキストファイルをデータ構造体にロードする方が良いでしょう。この場合はリンクされたリストですか?多分、誰かがこの仕事をどのように達成するか正しい方向に私を導くことができます。 (私は私のためにそれをコード化するか、私に案内するか、アルゴリズムを与えることを頼むのではなく、非常に感謝しています)。ありがとう!

答えて

1

私はあなたがC++でファイルを読む方法を知っていると仮定します。もしそうでなければ、それを見てください。例えばtutorialです。

並べ替え部分については、STL container を使用してIDを格納できます。私はキーとしてIDと値として文字列を持つマップをお勧めします。

マップの利点は、既にソートされていることです(昇順)。

別のコンテナを使用している場合は、ソートアルゴリズムがどのように機能するかを理解する必要があります。たとえば、バブルソート、選択ソート、クイックソート、またはメインソートのソートソートなどです。

実装なしでソートする場合は、thisをご覧ください。

これはあなたの問題に対する具体的な回答を提供するものではありませんが、開始に役立ちます。

[UPDATE] 正しく読み込まれず、複数の行が同じIDを持つ可能性があります。地図が必ずしも最適なコンテナであるとは限りません。

+2

おそらく['std :: multimap'](http://en.cppreference.com/w/cpp/container/multimap)が使用されます。キーごとに複数の値を設定できます。同等のキーを持つ値が挿入順に格納されます。 –

関連する問題