⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 由给定的多项式生成扩域
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
#include<math.h>
char coef_fx[]="11101001";//x^7+x^6+x^5+x^3+1,请根据不同得表达式加以修改
int n,N;
void GetExtensionField(char *p_coef);
void PrintExtensionField(char *p_coef);
void main()
{
	n=strlen(coef_fx)-1;
	N=pow(2,n)-1;
	char *p_coef_alpha=new char [N*n+1];//每一个码字宽n,共N个
	GetExtensionField(p_coef_alpha);
	PrintExtensionField(p_coef_alpha);
	delete[]p_coef_alpha;
}
void GetExtensionField(char *p_coef)
{
	memset(p_coef,'0',n*N);
	p_coef[0]='1';//得到初始扩展码(100...00);
	int i,j;
	//计算扩展码
	for(i=1;i<N;i++)
	{
		strncpy(&p_coef[n*i+1],&p_coef[n*(i-1)],n-1);//将上一个码右移一位赋值给新生成得码
		if(p_coef[i*n-1]=='1')
		{
			for(j=0;j<n;j++)
				p_coef[n*i+j]=0x30+(p_coef[n*i+j]^coef_fx[n-j]);//模二加=异或,同时加上0x30变成字符'0'或'1'
		}
	}

}
void PrintExtensionField(char *p_coef)
{
		//输出扩码
	int i,j;
	char buffer[1024]="";
	printf("the extension field is:\n");
	for(i=0;i<N;i++)
	{
		strcpy(buffer,"");
		printf("a^%d\t=",i);
		for(j=0;j<n;j++)
		{
			if(p_coef[i*n+j]=='1')
			{
				sprintf(&buffer[strlen(buffer)],"a^%d+",j);			
			}
		}
		if(buffer[2]=='0')//将x^0替换为1
		{
			buffer[2]='1';
			strcpy(buffer,&buffer[2]);
		}
		if(buffer[strlen(buffer)-1]=='+')// 去掉最后一个+;
			buffer[strlen(buffer)-1]='\0';		
		strcat(buffer,"\n\t (");
		strncat(&buffer[strlen(buffer)],&p_coef[i*n],n);//增加对应得01码
		strcat(buffer,")");
		printf("%s\n",buffer);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -