[C ++]クエリ単語は、すべての周波数のテキストで表示され、順次以上の出現数が少ないから配置されています。

コンパイラ
私はコンパイラを使用:コードブロック

プログラムの説明
テキスト内のすべての単語の出現回数を見つけるためのプログラムの統計情報、発生数に基づいて、優先度の順に複数に少ないから。プログラムは、内の単語を取得するように変更する単語クエリプログラムクエリプログラムでC ++プライマーをトレースします。
 
プログラムの結果
英単語から6を見つけるためにインターネット上には、統計、すべての単語の出現頻度の統計でした。結果は以下の通りであります:
 
 
 
 
 
 
 
 
結果:
 
 
源代码
メイン函数
の#include <iostreamの>
する#include <ベクトル>
の#include <fstreamの>
する#include <cstdlib>
の#include "statistics.h"
ifstream&open_file(はifstream&に、CONSTストリング・ファイル)
{
    in.close()。
    in.clear();
    in.open(file.c_str())。
    に戻ります。
}
INTメイン(int型ARGC、チャー** ARGV)
{
    はifstream INFILE( "TEXT.TXT")。
    統計はTQ。
    tq.read_file(INFILE)。
    tq.dis();
    0を返します。
}

类函数
#ifndefのSTATISTICS_H
の#define STATISTICS_H
の#include <iostreamの>
する#include <ベクトル>
の#include <マップ>
の#include <iostreamの>
する#include <ベクトル>
の#include <fstreamの>
する#include <セット>
の#include <ストリング>
#含める<マップ>
書式#include <sstream提供>
名前空間stdを使用。
クラス統計
{
    パブリック:
        typedefはベクトル<文字列> :: size_type line_no。
        統計();
        仮想〜統計();
        ボイドREAD_FILE(はifstream&ある){
            store_file(です)。
            build_map();
        }
        ボイドstore_file(&はifstream);
        空build_map();
        空DIS();
   プライベート:
        ベクトル<文字列> lines_of_text。
        マップの<string、int型> word_map。
        <文字列、整数>仕上げをマッピングし、
}。

#include "statistics.h"
のボイド統計:: store_file(はifstream&ファイル)
{
    文字列のテキスト行。
    (getlineの(ファイル、テキスト行))しばらく
        lines_of_text.push_back(テキスト行)。
}
ボイド統計::()build_map
{
    ため(統計:: line_no LINE_NUM = 0;!LINE_NUM = lines_of_text.size(); ++ LINE_NUM){
        istringstream線(lines_of_text [LINE_NUM])。
        文字列の単語。
        一方、(ライン>>ワード){
            word_map [単語] + = 1;
        }
    }
}
ボイド統計:: DIS()
{
    マップ<文字列、整数> first_Max。
    マップ<文字列、整数> ::イテレータマックス。
    first_Max [ "完了"] = 0;
    用(マップ<文字列、整数> :: size_type時間= 0;!回= word_map.size();回++){
        マックス= first_Max.begin();
        用(マップ<文字列、整数> ::イテレータNUM = word_map.begin();!NUM = word_map.end(); NUM ++){
            場合(num->第二> MAX->秒)
                マックス= NUM;
        }
        COUT << MAX->第<< "\ T" << MAX->第<< "次" << ENDL。
        仕上げ[MAX->第] = MAX->第二;
        word_map.erase(最大)。
    }
}
統計::統計()
{
}
統計::




オリジナルリンクします。https://blog.csdn.net/AutoCar_player/article/details/102995713

おすすめ

転載: www.cnblogs.com/ai-player/p/11830525.html