功能:输入信息位,生成海明码
编译环境:VS2022
样例:
1010
H1=P1=H3⊕H5⊕H7=0⊕1⊕1=0
H2=P2=H3⊕H6⊕H7=0⊕0⊕1=1
H4=P3=H5⊕H6⊕H7=1⊕0⊕1=0
1010010
代码如下:
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<cmath>
#include <windows.h>
#include<algorithm>
using namespace std;
#define JHM(value) ((value==1||value==49)?1:(value==0||value==48)?0:0)
void colorxy(int x, int y)
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hOut, x | y);
}
class HMCode
{
public:
HMCode(string str, int str_len,int K) :code(str), len(str_len),K(K)
{
code.insert(0," ");
ve.push_back({
});
ve.push_back({
3,5,7,9,11 });
ve.push_back({
3,6,7,10,11 });
ve.push_back({
5,6,7,12 });
ve.push_back({
9,10,11,12 });
print();
}
void print()
{
for (int i = 1; i <= K; i++)
{
cout << "H" << P_list[i] << "=";
cout << "P" << i << "=";
for (int j = 0; j < ve[i].size(); j++)
{
if (ve[i][j] > len)
{
continue;
}
else
{
if (j != 0)
{
cout << "⊕";
}
cout << "H" << ve[i][j];
}
}
cout <<