teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/12/24 13:43

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -2,4 +2,25 @@
2
2
  > counter[tolower(ch) - 'a']++;
3
3
  > にエラーがでてしまうのですがなぜでしょうか。
4
4
 
5
- tolower(ch) - 'a' がcounterの範囲: 0~25 の下限/上限から外れることがある から。
5
+ tolower(ch) - 'a' がcounterの範囲: 0~25 の下限/上限から外れることがある から。
6
+
7
+ [追記] 別解(のひとつ)
8
+ ```C++
9
+ #include <iostream>
10
+ #include <string>
11
+ #include <map>
12
+ #include <cctype>
13
+
14
+ int main() {
15
+ std::map<char,int> counter;
16
+ char ch;
17
+
18
+ while ( std::cin >> ch ) {
19
+ if ( isalpha(ch) ) ++counter[tolower(ch)];
20
+ }
21
+
22
+ for ( ch = 'a'; ch <= 'z'; ++ch ) {
23
+ std::cout << ch << " : " << counter[ch] << std::endl;
24
+ }
25
+ }
26
+ ```