前提・実現したいこと
https://onlinejudge.u-aizu.ac.jp/problems/ITP1_8_C
の問題が上手くいきません。なぜでしょうか。
問題文
与えられた英文に含まれる、各アルファベットの数を数えるプログラムを作成して下さい。 なお、小文字と大文字は区別しません。
Input
複数の行にまたがる1つの英文が与えられます。
Output
与えられた英文に含まれる各アルファベットの数を以下に示す形式で出力して下さい:
a : aの個数
b : bの個数
c : cの個数
.
.
z : zの個数
Constraints
英文が含む文字の数 < 1200
Sample Input
This is a pen.
Sample Output
a : 1
b : 0
c : 0
d : 0
e : 1
f : 0
g : 0
h : 1
i : 2
j : 0
k : 0
l : 0
m : 0
n : 1
o : 0
p : 1
q : 0
r : 0
s : 2
t : 1
u : 0
v : 0
w : 0
x : 0
y : 0
z : 0
実行結果
This is a pen. a
該当のソースコード
#include <iostream> #include <string> int main() { char ch; int counter[26] = { 0 }; //for (int i = 0; i < 26; i++) { // counter[i] = 0; //} while (std::cin >> ch) { if (tolower(ch) - 'a' >= 0) { counter[tolower(ch) - 'a']++; } } for (int i = 0; i < 26; i++) { std::cout << (char)('a' + i) << " : " << counter[i] << std::endl; } return 0; }
試したこと
また、if文でif (tolower(ch) - 'a' >= 0)としないと
counter[tolower(ch) - 'a']++;
にエラーがでてしまうのですがなぜでしょうか。
回答2件
あなたの回答
tips
プレビュー