ここに私のコードです:C++ EOFはcout <<上のCHAR(int型)鋳造
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char *argv[])
{
int duze[26];
int male[26];
int n;
//cout<<int('a')<<endl<<int('A');
cin>>n;
char temp;
for (int i=0; i<27; i++)
male[i]=0;
for (int i=0; i<27; i++)
duze[i]=0;
while (n>=0)
{
cin.get(temp);
if (temp=='\n') { n--; continue;}
if (temp==' ') continue;
if (temp>='a' && temp<='z')
male[temp-'a']++;
else if (temp>='A' && temp<='Z')
duze[temp-'A']++;
}
for (int i=0; i<27; i++)
if (male[i]>0) cout<<char(i+'a')<<" "<<male[i]<<endl;
for (int i=0; i<27; i++)
if (duze[i]>0) cout<<char(i+'A')<<" "<<duze[i]<<endl;
//system("pause");
return 0;
}
プログラムは、テキストの与えられたn行の文字をカウントします。存在しない文字はスキップされます。 コンソールで実行してもOKですが、文字の前にEOF文字があることがわかりました... どうすればいいですか?
配列インデックスは '0'から' N-1'まで実行されます。ここで 'N'は要素の数です:すべての' for'ループは1つのアクセス回数が多すぎます。 – hmjd
"文字の前にEOF文字があることを知っています"。そしてそれをどうやって知っていますか? –
ああ、それを見なかった;)高校。返信を追加して、正しいものとしてマークします。 :D –