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

📄 juanjima.c

📁 它用C语言实现了卷积码的解编码过程
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <conio.h>
#include <stdio.h>

int dbm[22][2],sm[22],zht[22];

char r2[88];

main()
{
	int b1=0x40,b2=0x0f,b3=0x01;
	int l1,l2,ysm1,ysm2,mw,symble,i,n,qr,ld,hmj,j,tempi,yji=0;
	int u0[22],u1[22],u2[22],u3[22],u[22],m0[22],
		m1[22],m2[22],m3[22];
	int dbm0[22][2],dbm1[22][2],zhtai[22],wz[22];
	char yc[5],r1[88],r2temp[5];
	int sumi,s,t10,t20,t11,t21,t12,t22,t13,t23,r2i;
	int s0_01=10,s0_02=8,s0_12=5,s0_11=0;
	int s1_01=0 ,s1_02=5,s1_12=8,s1_11=10;
	int u00[22],u10[22],u20[22],u30[22];
	int s0=0,s00=0,s1=0,s10=0,s2=0,s20=0,s3=0,s30=0;
	int zhtai0[22],zhtai01[22],zhtai1[22],zhtai11[22],zhtai2[22],zhtai21[22],
		zhtai3[22],zhtai31[22];
	//   clrscr();
	printf("\nPlease input 5 number of 16H:");
	
	
	while (yji<5)
	{
		printf("\nInput %d number:",yji+1);
		yc[yji]=toupper(getche());
		if ((yc[yji]>='0'&& yc[yji]<='9')
			|| (yc[yji]>='A' && yc[yji]<='F'))   yji++;
		else printf("\nPlease input again:0-9 or a-f!\n");
	}
	
	for(i=0;i<5;i++)
    {
		symble=(((int)yc[i])&b1);
		ysm1=(((int)yc[i])&b2);
		if(symble==b1)
			ysm2=9+ysm1;
		else
			ysm2=ysm1;
		for(l1=(4*(i+1)-1);l1>=(4*i);l1--)
		{
			mw=(ysm2&b3);
			if(mw==b3)
				sm[l1]=1;
			else
				sm[l1]=0;
			ysm2>>=1;
		}
	}
	sm[20]=0;
	sm[21]=0;
	bianma();

	printf("\nTo be encoded codes:\n");

	for(n=0;n<22;n++)
	{printf("%3d",sm[n]);
	}

	printf("\nThe encoded cores:\n ");

	for(l1=0;l1<22;l1++)
	{
		for(l2=0;l2<2;l2++)
		{printf("%d",dbm[l1][l2]);
		}
		printf(",");
	}

	for(i=0;i<22;i++)
	for(j=0;j<2;j++)
	dbm0[i][j]=dbm[i][j];
	
	

	for(i=0;i<22;i++)
	{   for(j=0;j<2;j++)
    {  if(dbm0[i][j]==0)
	{ r2[4*i+2*j]='0';
	   r2[4*i+2*j+1]='1';
	}
	else
	{ r2[4*i+2*j]='1';
	   r2[4*i+2*j+1]='1';
	}
    }
	}

    for(i=0;i<44;i++)
    {  for(j=0;j<2;j++)
	{r1[2*i+j]=r2[2*i+j];
    }
    }

	printf("\nThe received codes of being assumed:\n");
	for(i=0;i<22;i++)
	{for(j=0;j<4;j++)
	{printf("%c",r1[4*i+j]);
	}
    printf(",");
	}
	cuoma();
	printf("\nThe very received codes:\n");
	for(i=0;i<22;i++)
	{for(j=0;j<4;j++)
	{printf("%c",r2[4*i+j]);
	}
    printf(",");
	}
	getche();
	strncpy(r2temp,r2,4);
	r2i=0;
	for (j=0;j<4;j++)
		r2i=r2i*10+r2temp[j]-48;
	switch(r2i)
	{
	case  101:
		s0=s0_01+s0_01+s00;
		s1=s1_01+s1_01+s00;
		break;
	case  102:
		s0=s0_01+s0_02+s00;
		s1=s1_01+s1_02+s00;
		break;
	case  111:
		s0=s0_01+s0_11+s00;
		s1=s1_01+s1_11+s00;
		break;
	case 112:
		s0=s0_01+s0_12+s00;
		s1=s1_01+s1_12+s00;
		break;
	case 201:
		s0=s0_02+s0_01+s00;
		s1=s1_02+s1_01+s00;
		break;
	case 202:
		s0=s0_02+s0_02+s00;
		s1=s1_02+s1_02+s00;
		break;
	case 211:
		s0=s0_02+s0_11+s00;
		s1=s1_02+s1_11+s00;
		break;
	case 212:
		s0=s0_02+s0_12+s00;
		s1=s1_02+s1_12+s00;
		break;
	case  1101:
		s0=s0_11+s0_01+s00;
		s1=s1_11+s1_01+s00;
		break;
	case  1102:
		s0=s0_11+s0_02+s00;
		s1=s1_11+s1_02+s00;
		break;
	case  1111:
		s0=s0_11+s0_11+s00;
		s1=s1_11+s1_11+s00;
		break;
	case  1112:
		s0=s0_11+s0_12+s00;
		s1=s1_11+s1_12+s00;
		break;
	case  1201:
		s0=s0_12+s0_01+s00;
		s1=s1_12+s1_01+s00;
		break;
	case  1202:
		s0=s0_12+s0_02+s00;
		s1=s1_12+s1_02+s00;
		break;
	case  1211:
		s0=s0_12+s0_11+s00;
		s1=s1_12+s1_11+s00;
		break;
	case  1212:
		s0=s0_12+s0_12+s00;
		s1=s1_12+s1_12+s00;
		break;
	}
	s00=s0;s10=s1;
	strncpy(r2temp,r2+4,4);
	r2i=0;
	for (j=0;j<4;j++)
		r2i=r2i*10+r2temp[j]-48;
	
	
	switch(r2i)
	{
	case 101:
		s0=s0_01+s0_01+s00;
		s1=s1_01+s1_01+s00;
		s2=s1_01+s0_01+s10;
		s3=s0_01+s1_01+s10;
		break;
	case 102:
		s0=s0_01+s0_02+s00;
		s1=s1_01+s1_02+s00;
		s2=s1_01+s0_02+s10;
		s3=s0_01+s1_02+s10;
		break;
	case 111:
		s0=s0_01+s0_11+s00;
		s1=s1_01+s1_11+s00;
		s2=s1_01+s0_11+s10;
		s3=s0_01+s1_11+s10;
		break;
	case 112:
		s0=s0_01+s0_12+s00;
		s1=s1_01+s1_12+s00;
		s2=s1_01+s0_12+s10;
		s3=s0_01+s1_12+s10;
		break;
	case 201:
		s0=s0_02+s0_01+s00;
		s1=s1_02+s1_01+s00;
		s2=s1_02+s0_01+s10;
		s3=s0_02+s1_01+s10;
		break;
	case 202:
		s0=s0_02+s0_02+s00;
		s1=s1_02+s1_02+s00;
		s2=s1_02+s0_02+s10;
		s3=s0_02+s1_02+s10;
		break;
	case 211:
		s0=s0_02+s0_11+s00;
		s1=s1_02+s1_11+s00;
		s2=s1_02+s0_11+s10;
		s3=s0_02+s1_11+s10;
		break;
	case 212:
		s0=s0_02+s0_12+s00;
		s1=s1_02+s1_12+s00;
		s2=s1_02+s0_12+s10;
		s3=s0_02+s1_12+s10;
		break;
	case  1101:
		s0=s0_11+s0_01+s00;
		s1=s1_11+s1_01+s00;
		s2=s1_11+s0_01+s10;
		s3=s0_11+s1_01+s10;
		break;
	case  1102:
		s0=s0_11+s0_02+s00;
		s1=s1_11+s1_02+s00;
		s2=s1_11+s0_02+s10;
		s3=s0_11+s1_02+s10;
		break;
	case  1111:
		s0=s0_11+s0_11+s00;
		s1=s1_11+s1_11+s00;
		s2=s1_11+s0_11+s10;
		s3=s0_11+s1_11+s10;
		break;
	case  1112:
		s0=s0_11+s0_12+s00;
		s1=s1_11+s1_12+s00;
		s2=s1_11+s0_12+s10;
		s3=s0_11+s1_12+s10;
		break;
	case  1201:
		s0=s0_12+s0_01+s00;
		s1=s1_12+s1_01+s00;
		s2=s1_12+s0_01+s10;
		s3=s0_12+s1_01+s10;
		break;
	case  1202:
		s0=s0_12+s0_02+s00;
		s1=s1_12+s1_02+s00;
		s2=s1_12+s0_02+s10;
		s3=s0_12+s1_02+s10;
		break;
	case  1211:
		s0=s0_12+s0_11+s00;
		s1=s1_12+s1_11+s00;
		s2=s1_12+s0_11+s10;
		s3=s0_12+s1_11+s10;
		break;
	case  1212:
		s0=s0_12+s0_12+s00;
		s1=s1_12+s1_12+s00;
		s2=s1_12+s0_12+s10;
		s3=s0_12+s1_12+s10;
	}
	u00[0]=u0[0]=0;u00[1]=u0[1]=0;
	u10[0]=u1[0]=0;u10[1]=u1[1]=1;
	u20[0]=u2[0]=1;u20[1]=u2[1]=0;
	u30[0]=u3[0]=1;u30[1]=u3[1]=1;
	zhtai0[0]=zhtai0[1]=zhtai1[0]=zhtai01[0]=zhtai01[1]=zhtai11[0]=0;
	zhtai1[1]=zhtai2[0]=zhtai3[0]=zhtai11[1]=zhtai21[0]=zhtai31[0]=1;
	zhtai2[1]=zhtai21[1]=2;zhtai3[1]=zhtai31[1]=3;
	for (sumi=8;sumi<88;sumi=sumi+4)
	{
		s00=s0;s10=s1;s20=s2;s30=s3;
		strncpy(r2temp,r2+sumi,4);
		r2i=0;
		for (j=0;j<4;j++)
			r2i=r2i*10+r2temp[j]-48;
		switch(r2i)
		{
		case 101:
			s0=((t10=s0_01+s0_01+s00)>(t20=s1_01+s1_01+s20)?t10:t20);
			s1=((t11=s1_01+s1_01+s00)>(t21=s0_01+s0_01+s20)?t11:t21);
			s2=((t12=s1_01+s0_01+s10)>(t22=s0_01+s1_01+s30)?t12:t22);
			s3=((t13=s0_01+s1_01+s10)>(t23=s1_01+s0_01+s30)?t13:t23);
			break;
		case 102:
			s0=((t10=s0_01+s0_02+s00)>(t20=s1_01+s1_02+s20)?t10:t20);
			s1=((t11=s1_01+s1_02+s00)>(t21=s0_01+s0_02+s20)?t11:t21);
			s2=((t12=s1_01+s0_02+s10)>(t22=s0_01+s1_02+s30)?t12:t22);
			s3=((t13=s0_01+s1_02+s10)>(t23=s1_01+s0_02+s30)?t13:t23);
			break;
		case 111:
			s0=((t10=s0_01+s0_11+s00)>(t20=s1_01+s1_11+s20)?t10:t20);
			s1=((t11=s1_01+s1_11+s00)>(t21=s0_01+s0_11+s20)?t11:t21);
			s2=((t12=s1_01+s0_11+s10)>(t22=s0_01+s1_11+s30)?t12:t22);
			s3=((t13=s0_01+s1_11+s10)>(t23=s1_01+s0_11+s30)?t13:t23);
			break;
		case 112:
			s0=((t10=s0_01+s0_12+s00)>(t20=s1_01+s1_12+s20)?t10:t20);
			s1=((t11=s1_01+s1_12+s00)>(t22=s0_01+s0_12+s20)?t11:t21);
			s2=((t12=s1_01+s0_12+s10)>(t22=s0_01+s1_12+s30)?t12:t22);
			s3=((t13=s0_01+s1_12+s10)>(t23=s1_01+s0_12+s30)?t13:t23);
			break;

⌨️ 快捷键说明

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