華中科学技術大学の再試験パリティ検査


タイトルの説明
文字列を入力し、各文字に対して奇抜な検証を行い、最後に検証後のバイナリ数(例えば‘3’、出力:10110011)を出力します.
説明の入力
入力には、100を超えない文字列が含まれます.
出力の説明
テストデータのセットが複数ある可能性があります.各グループのデータに対して、文字列の各文字に対して、テーマごとにパリティを行った数を出力し、各文字の検証の結果が1行を占めます.

入力
3
3a

しゅつりょく
10110011
10110011
01100001

原題リンク
まとめ
簡単です.3歩に分けて行きます.一、文字のASCIIコードに対応するバイナリ数を求める.二、統計8ビットバイナリの「1」の個数は、奇数個であれば構わない.偶数であれば、バイナリの最高位を「1」に変更します.三、出力バイナリ;ポイントはどのようにx進法を得るかです:転がり相除法.
Code
#include
#include
#include
using namespace std;
void turnToBinary(char a, char str_end[])
{
	int value = (int)a;
	for (int i = 7; i >= 0; i--)
	{
		str_end[i] = char(value % 2 + '0');
		value = value / 2;
	}
}
void securitySingle(char str[])//  ‘1’      
{
	int count = 0;
	for (int i = 0; i < 8;i++)
	{
		if (str[i] == '1')
			count++;
	}
	if (count % 2 == 0)
	{
		if (str[0] == '0')
			str[0] = '1';
	}
}
int main()
{
	string str;
	char str_end[9]="00000000";//str_end         
	while (cin >> str)
	{
		for (int i = 0; i < str.length(); i++)
		{
			turnToBinary(str[i], str_end);
			securitySingle(str_end);
			puts(str_end);
		}
	}
	return 0;
}