C/C++プログラミング学習-第10週③漢字統計
4450 ワード
タイトルリンク
タイトルの説明
指定したテキストファイル内の漢字の個数を統計します.
Input入力ファイルには、まず、テストインスタンスの個数を表す整数nが含まれ、次にnセグメントテキストが含まれます.
Outputはテキストごとに漢字の数を出力し,テストインスタンスごとの出力が1行を占める.
[Hint:]漢字機内コードの特徴から~
Sample Input
Sample Output
構想
1つの漢字の機内コードは2バイトを占め、各バイトの最上位1ビットは1である.一方,計算機では,符号化第1位は符号ビットであり,1は負数を表すので,漢字機内符号のバイト当たりの10進数は負数である.統計入力文字列にはいくつかの漢字が含まれており、文字列の中で0未満の文字がいくつかあるだけで、それを2で割ると答えが得られます.
C++コード:
タイトルの説明
指定したテキストファイル内の漢字の個数を統計します.
Input入力ファイルには、まず、テストインスタンスの個数を表す整数nが含まれ、次にnセグメントテキストが含まれます.
Outputはテキストごとに漢字の数を出力し,テストインスタンスごとの出力が1行を占める.
[Hint:]漢字機内コードの特徴から~
Sample Input
2
WaHaHa! WaHaHa! WaHaHa! WaHaHa!
Are you ready?
Sample Output
14
9
構想
1つの漢字の機内コードは2バイトを占め、各バイトの最上位1ビットは1である.一方,計算機では,符号化第1位は符号ビットであり,1は負数を表すので,漢字機内符号のバイト当たりの10進数は負数である.統計入力文字列にはいくつかの漢字が含まれており、文字列の中で0未満の文字がいくつかあるだけで、それを2で割ると答えが得られます.
C++コード:
#include
using namespace std;
char a[100005];
int main()
{
int n;
while(cin >> n)
{
int temp = n - 1;
while(n--)
{
char c;
int count = 0, i = 0;
if(n == temp)
getchar();
while(c = getchar())
{
if(c == '
') break;
if(c < 0) count++;
a[i++] = c;
}
cout << count / 2 <<endl;
}
}
}