経由で文字カウントを行っていますchar c = cin.get()
。私の出力の例は次のようになります: a: 53 b: 32 c: 29など..
アルファベットの 1 つで、めちゃくちゃ大きな 9 桁の数字を取得しています。そして、より多くの文字を含む別の入力ファイルを使用すると、数値が 6 桁になり、大きすぎて正確になりません。この表現型について何か考えはありますか?
繰り返しになりますが、今学期が終わりに迫っています。助けていただければ幸いです。
int main (int argc, char *argv[])
{
int count [26] = { };
char alpha [26] = { };
char c;
c = cin.get();
while(!cin.eof())
{
if (isalpha(c))
{
c = tolower(c);
}
count [ c - 'a']++;
alpha [ c - 'a'] = c;
c = cin.get();
}
for ( int i = 0; i<26; i++ )
{
cout << alpha[i] << ":" << count[i] << endl;
}
} //end main
出力は次のとおりです:(編集済み)
a:224
b:50
c:70
d:20
e:167772180
f:10
g:40
h:66
i:28
入力は次のとおりです:(編集済み)
あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
これらの変更を行いましたが、まだ「ハング」しています。
c = cin.get();
while(c=cin.get())
{
c = tolower(c);
if (isalpha(c))
continue;
count [ c - 'a']++;
alpha [ c - 'a'] = c;
}
for ( int i = 0; i<26; i++ )
{
cout << alpha[i] << ":" << count[i] << endl;
}
} //end main