#include <iostream>
#include <string>
#define SIZE_LETTERS (254)
using namespace std;
void analyzeF(const string *input, char a, int *freq) {
for (int i = 0; i < (input)->length(); ++i) {
if ((*input)[i] == a)
++(*freq);
}
}
int main() {
int freq = 0;
string input = "53\u2021\u2021\u2020305))6*;4826)4\u2021.)4\u2021);806*;48\u2020860))85;;]8*;:\u2021*8\u202083(88)5*\u2020;46(;88*96*?;8)*\u2021(;485);5*\u20202:*\u2021(;4956*2(5*\u20144)88*;4069285);)6\u20208)4\u2021\u2021;1(\u20219;48081;8:8\u20211;48\u202085;4)485\u2020528806*81(\u20219;48;(88;4(\u2021?34;48)4\u2021;161;:188;\u2021?;";
char c;
cout << "Please enter a character to be matched: " << endl;
cin >> c;
analyzeF(&input, c, &freq);
double result = (double)freq/SIZE_LETTERS;
cout << "The frequency for " << c << " is:" << result << endl;
return 1;
}
このプログラムは、文字列で使用されている char の頻度を検出するように作成されています。
プログラムを実行すると、char c に何を入力しても、出力値は 0 になります。
ただし、gdb でデバッグすると、正しい結果が得られます。たとえば、8 の度数は 0.133858 です。
.o オブジェクトを生成するために使用するコマンドは次のとおりです。
g++ -g c.cpp -o c
./c