0

こんにちは、C++ に関する質問があります。

「9 john 3 jane 7 tom 2 sam 6 tom 1 nicole 5 tom 4 jane 8 ben」のような数字と名前の txt ファイルを開いて読み取るプログラムを作成しようとしています。

ファイルを読み取ったら、割り当てられた番号の順に名前をベクトルに配置する必要があります。したがって、ベクトルを印刷するときは、次の順序にする必要があります。

ニコール

サム

ジェーン

ジェーン

トム

トム

トム

ベン

ジョン

次に、並べ替えられたベクトルを取得し、名前を各名前の出現回数とともに新しいファイルに配置する必要があります。したがって、この新しいファイルを印刷すると、出力は次のようになります。

ニコール 1

サム1

ジェーン 2

トム 3

ベン1

ジョン1

これまでのところ、これは私のコードです:(出力をテストするためにのみ使用していたため、count_names関数は無視してください)(後で再帰関数を実行する必要があるため、現時点で必要のない#includeは無視してください)

using namespace std;

void fill_vector ( vector<string> &v );

void print_vector ( vector<string> v );

int count_names ( vector<string> v );

int main()
{

    vector<string> v;
    string s;

    fill_vector(v);

    int num_names;
    num_strings = count_strings(v)/2;
    cout << "number of names " << num_names << endl;

    print_vector(v);

    return 0;

}

void fill_vector ( vector<string> &v )
{
    string s;

    ifstream fin;
    string input = "toy_names.txt";
    fin.open ( input.c_str() );
    fin >> s;

    while ( !fin.eof() )
    {
        v.push_back ( s );
        fin >> s;
    }
}

void print_vector ( vector<string> v )
{

    for ( int i = 0; i < v.size(); i++ )
        cout << v[i] << endl;
}

int count_names ( vector<string> v )
{

    int counter = 0;
    for ( int i = 0; i < v.size(); i++ )
    {
        counter++;
    }

    return counter;
}

だから今のところ、これは私の出力です:

9

ジョン

3

ジェーン

7

トム

2

サム

6

トム

1

ニコール

5

トム

4

ジェーン

8

ベン

だから私はそれらを適切な順序(それらの前の番号の順に名前)にしてから、新しいtxtファイルに書き込むのに助けが必要ですありがとう

4

2 に答える 2