リスト構造を使って、入力された文字の出現頻度を表示させるプログラムがわかりません。
入力された文字をそのまま表示させるものは作れたのですが、出現回数をどのようにして計算し表示させるのかがわからないのです。
どうかご指南頂けないでしょうか?
リストについてです。
Re: リストについてです。
「文字」の定義を示してください。さんま さんが書きました:リスト構造を使って、入力された文字の出現頻度を表示させるプログラムがわかりません。
英文字に限るのか、
数字を含むのか、
日本語などの2バイト文字にも対応する必要があるのか、等々。
そのコードを貼ってみてください。さんま さんが書きました: 入力された文字をそのまま表示させるものは作れた
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
-
かずま
Re: リストについてです。
#include <iostream>
#include <map>
int main()
{
char c;
std::map<char, int> a;
while (std::cin >> c) a[c]++;
for (auto i = a.begin(); i != a.end(); ++i)
std::cout << i->first << ' ' << i->second << '\n';
}
#include <iostream>
#include <list>
struct node {
char c;
int count;
node(char c) : c(c), count(1) {}
};
int main()
{
char c;
std::list<node> a;
while (std::cin >> c) {
auto i = a.begin();
while (i != a.end() && i->c < c) ++i;
if (i != a.end() && i->c == c) i->count++;
else a.insert(i, node(c));
}
for (auto i = a.begin(); i != a.end(); ++i)
std::cout << i->c << ' ' << i->count << '\n';
}
Re: リストについてです。
「リスト構造を使って」という指定だけで、std::mapを使ってはいけないという縛りは無いようなので、
まず入力された文字をリスト構造で保持し、それを走査してstd::mapで出現頻度を数えていけばいいと思います。
別の観点から提案すると、文字列をデフォルトでリストとして扱うHaskellを使うという方法もあると思います。
まず入力された文字をリスト構造で保持し、それを走査してstd::mapで出現頻度を数えていけばいいと思います。
別の観点から提案すると、文字列をデフォルトでリストとして扱うHaskellを使うという方法もあると思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)