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

📄 juanjima.c

📁 它用C语言实现了卷积码的解编码过程
💻 C
📖 第 1 页 / 共 2 页
字号:
		case 201:
			s0=((t10=s0_02+s0_01+s00)>(t20=s1_02+s1_01+s20)?t10:t20);
			s1=((t11=s1_02+s1_01+s00)>(t21=s0_02+s0_01+s20)?t11:t21);
			s2=((t12=s1_02+s0_01+s10)>(t22=s0_02+s1_01+s30)?t12:t22);
			s3=((t13=s0_02+s1_01+s10)>(t23=s1_02+s0_01+s30)?t13:t23);
			break;
		case 202:
			s0=((t10=s0_02+s0_02+s00)>(t20=s1_02+s1_02+s20)?t10:t20);
			s1=((t11=s1_02+s1_02+s00)>(t21=s0_02+s0_02+s20)?t11:t21);
			s2=((t12=s1_02+s0_02+s10)>(t22=s0_02+s1_02+s30)?t12:t22);
			s3=((t13=s0_02+s1_02+s10)>(t23=s1_02+s0_02+s30)?t13:t23);
			break;
		case 211:
			s0=((t10=s0_02+s0_11+s00)>(t20=s1_02+s1_11+s20)?t10:t20);
			s1=((t11=s1_02+s1_11+s00)>(t21=s0_02+s0_11+s20)?t11:t21);
			s2=((t12=s1_02+s0_11+s10)>(t22=s0_02+s1_11+s30)?t12:t22);
			s3=((t13=s0_02+s1_11+s10)>(t23=s1_02+s0_11+s30)?t13:t23);
			break;
		case 212:
			s0=((t10=s0_02+s0_12+s00)>(t20=s1_02+s1_12+s20)?t10:t20);
			s1=((t11=s1_02+s1_12+s00)>(t21=s0_02+s0_12+s20)?t11:t21);
			s2=((t12=s1_02+s0_12+s10)>(t22=s0_02+s1_12+s30)?t12:t22);
			s3=((t13=s0_02+s1_12+s10)>(t23=s1_02+s0_12+s30)?t13:t23);
			break;
		case  1101:
			s0=((t10=s0_11+s0_01+s00)>(t20=s1_11+s1_01+s20)?t10:t20);
			s1=((t11=s1_11+s1_01+s00)>(t21=s0_11+s0_01+s20)?t11:t21);
			s2=((t12=s1_11+s0_01+s10)>(t22=s0_11+s1_01+s30)?t12:t22);
			s3=((t13=s0_11+s1_01+s10)>(t23=s1_11+s0_01+s30)?t13:t23);
			break;
		case  1102:
			s0=((t10=s0_11+s0_02+s00)>(t20=s1_11+s1_02+s20)?t10:t20);
			s1=((t11=s1_11+s1_02+s00)>(t21=s0_11+s0_02+s20)?t11:t21);
			s2=((t12=s1_11+s0_02+s10)>(t22=s0_11+s1_02+s30)?t12:t22);
			s3=((t13=s0_11+s1_02+s10)>(t23=s1_11+s0_02+s30)?t13:t23);
			break;
		case  1111:
			s0=((t10=s0_11+s0_11+s00)>(t20=s1_11+s1_11+s20)?t10:t20);
			s1=((t11=s1_11+s1_11+s00)>(t21=s0_11+s0_11+s20)?t11:t21);
			s2=((t12=s1_11+s0_11+s10)>(t22=s0_11+s1_11+s30)?t12:t22);
			s3=((t13=s0_11+s1_11+s10)>(t23=s1_11+s0_11+s30)?t13:t23);
			break;
		case  1112:
			s0=((t10=s0_11+s0_12+s00)>(t20=s1_11+s1_12+s20)?t10:t20);
			s1=((t11=s1_11+s1_12+s00)>(t21=s0_11+s0_12+s20)?t11:t21);
			s2=((t12=s1_11+s0_12+s10)>(t22=s0_11+s1_12+s30)?t12:t22);
			s3=((t13=s0_11+s1_12+s10)>(t23=s1_11+s0_12+s30)?t13:t23);
			break;
		case  1201:
			s0=((t10=s0_12+s0_01+s00)>(t20=s1_12+s1_01+s20)?t10:t20);
			s1=((t11=s1_12+s1_01+s00)>(t21=s0_12+s0_01+s20)?t11:t21);
			s2=((t12=s1_12+s0_01+s10)>(t22=s0_12+s1_01+s30)?t12:t22);
			s3=((t13=s0_12+s1_01+s10)>(t23=s1_12+s0_01+s30)?t13:t23);
			break;
		case  1202:
			s0=((t10=s0_12+s0_02+s00)>(t20=s1_12+s1_02+s20)?t10:t20);
			s1=((t11=s1_12+s1_02+s00)>(t21=s0_12+s0_02+s20)?t11:t21);
			s2=((t12=s1_12+s0_02+s10)>(t22=s0_12+s1_02+s30)?t12:t22);
			s3=((t13=s0_12+s1_02+s10)>(t23=s1_12+s0_02+s30)?t13:t23);
			break;
		case  1211:
			s0=((t10=s0_12+s0_11+s00)>(t20=s1_12+s1_11+s20)?t10:t20);
			s1=((t11=s1_12+s1_11+s00)>(t21=s0_12+s0_11+s20)?t11:t21);
			s2=((t12=s1_12+s0_11+s10)>(t22=s0_12+s1_11+s30)?t12:t22);
			s3=((t13=s0_12+s1_11+s10)>(t23=s1_12+s0_11+s30)?t13:t23);
			break;
		case  1212:
			s0=((t10=s0_12+s0_12+s00)>(t20=s1_12+s1_12+s20)?t10:t20);
			s1=((t11=s1_12+s1_12+s00)>(t21=s0_12+s0_12+s20)?t11:t21);
			s2=((t12=s1_12+s0_12+s10)>(t22=s0_12+s1_12+s30)?t12:t22);
			s3=((t13=s0_12+s1_12+s10)>(t23=s1_12+s0_12+s30)?t13:t23);
		}
		qr=sumi/4;
		if(s0==t10)
			for(n=0;n<qr;n++)
			{u0[n]=u00[n];
			zhtai0[n]=zhtai01[n];
			}
			if(s0==t20)
				for(n=0;n<qr;n++)
				{u0[n]=u20[n];
				zhtai0[n]=zhtai21[n];
				}
				
				if(s1==t11)
					for(n=0;n<qr;n++)
					{u1[n]=u00[n];
					zhtai1[n]=zhtai01[n];
					}
					
					if(s1==t21)
						for(n=0;n<qr;n++)
						{u1[n]=u20[n];
						zhtai1[n]=zhtai21[n];
						}
						
						if(s2==t12)
							for(n=0;n<qr;n++)
							{u2[n]=u10[n];
							zhtai2[n]=zhtai11[n];
							}
							
							if(s2==t22)
								for(n=0;n<qr;n++)
								{u2[n]=u30[n];
								zhtai2[n]=zhtai31[n];
								}
								
								if(s3==t13)
									for(n=0;n<qr;n++)
									{u3[n]=u10[n];
									zhtai3[n]=zhtai11[n];
									}
									
									if(s3==t23)
										for(n=0;n<qr;n++)
										{u3[n]=u30[n];
										zhtai3[n]=zhtai31[n];
										}
										u0[qr]=0;u1[qr]=1; zhtai0[n]=0;zhtai1[n]=1;
										u2[qr]=0;u3[qr]=1; zhtai2[n]=2;zhtai3[n]=3;
										for(n=0;n<=qr;n++)
										{u00[n]=u0[n]; zhtai01[n]=zhtai0[n];
										u10[n]=u1[n]; zhtai11[n]=zhtai1[n];
										u20[n]=u2[n]; zhtai21[n]=zhtai2[n];
										u30[n]=u3[n]; zhtai31[n]=zhtai3[n];
										}
										for(ld=0;ld<qr;ld++)
										{if((zhtai0[ld]==zhtai1[ld])&&(zhtai2[ld]==zhtai3[ld])
										&&(zhtai0[ld]==zhtai2[ld]))
										continue;
										else
											break;
										}
										if(ld!=0)
										{printf("\nThe decoded codes at present:\n");
										for(n=0;n<ld;n++)
										{printf("%2d",u0[n]);
										}
										printf("\nThe decoded code's lengths!");
										}
										else
											printf("\nNo codes can be decoded!!");
										printf("\n#ld=%d",ld);
										getche();
}
if(s0>=s1)
s=s0;
else
s=s1;
if(s>=s2)
s=s;
else
s=s2;
if(s>=s3)
s=s;
else
s=s3;
if(s==s0)
for(n=0;n<qr;n++)
u0[n]=u00[n];
if(s==s1)
for(n=0;n<qr;n++)
u0[n]=u10[n];
if(s==s2)
for(n=0;n<qr;n++)
u0[n]=u20[n];
if(s==s3)
for(n=0;n<qr;n++)
u0[n]=u30[n];
//clrscr();
printf("\nTo be encoded codes:\n");
for(n=0;n<22;n++)
{printf("%3d",sm[n]);
}
printf("\nThe encoded codes:\n ");
for(i=0;i<22;i++)
{for(j=0;j<2;j++)
{ printf("%d",dbm0[i][j]);
}
printf(",");
}
printf("\nThe status when encoding:\n");
for(i=0;i<22;i++)
{
	switch(zht[i]){
				case 00:printf("s0");break;
				case 01:printf("s1");break;
				case 10:printf("s2");break;
				case 11:printf("s3");break;
	}
}
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(",");
}
printf("\nThe decoded codes:\n");
for (j=0;j<22;j++)
{printf("%2d",u0[j]);
sm[j]=u0[j];
}
bianma();
printf("\nThe status when decoding:\n");
for(i=0;i<22;i++)
{
	switch(zht[i]){
				case 00:printf("s0");break;
				case 01:printf("s1");break;
				case 10:printf("s2");break;
				case 11:printf("s3");break;
	}
}
printf("\nThe Euclidean spaces:\n%d",s);
getche();
  }
  bianma()
  {
	  int s=00,s0=00,s1=01,s2=10,s3=11;
	  int i,l1,l2,ysm1,ysm2,mw,symble;
	  for(i=0;i<22;i++)
	  {
		  int j=0;
		  switch(s){
		  case 00:if(sm[i]==0)
				  {
					  s=s0;
					  zht[i]=00;
					  dbm[i][j]=0;
					  dbm[i][j+1]=0;
				  }
			  else
			  {s=s1;
			  zht[i]=01;
			  dbm[i][j]=1;
			  dbm[i][j+1]=1;
			  }
			  break;
		  case 01:if(sm[i]==0)
				  {
					  s=s2;
					  zht[i]=10;
					  dbm[i][j]=1;
					  dbm[i][j+1]=0;
				  }
			  else
			  {
				  s=s3;
				  zht[i]=11;
				  dbm[i][j]=0;
				  dbm[i][j+1]=1;
			  }
			  break;
		  case 10:if(sm[i]==0)
				  {
					  s=s0;
					  zht[i]=00;
					  dbm[i][j]=1;
					  dbm[i][j+1]=1;
				  }
			  else
			  {s=s1;
			  zht[i]=01;
			  dbm[i][j+1]=0;
			  dbm[i][j]=0;
			  }
			  break;
		  case 11:if(sm[i]==0)
				  {
					  s=s2;
					  zht[i]=10;
					  dbm[i][j]=0;
					  dbm[i][j+1]=1;
				  }
			  else
			  {
				  s=s3;
				  zht[i]=11;
				  dbm[i][j]=1;
				  dbm[i][j+1]=0;
			  }
			  break;
		  }
	  }
  }
  cuoma()
  {
	  char c1,c2,szht[2],c3,c4;
	  int i,j,n,goon,cwwz,sjwz1,sjwz2;
	  printf("\nif there are wrong code,press key y,else,press any key.\n");
	  c1=getche();
	  if(c1=='y')
	  {
		  do{
			  printf("\ninput the wrong position:\n");
			  for(n=1;n<2;n++)
			  {scanf("%d",&cwwz);
			  if(cwwz>=1&&cwwz<=44)
				  break;
			  else
			  { printf("\nWrong position!! Please input a number in 1 to 44\n");n--;
			  }}
			  printf("The very received codes of this position:\n");
			  c3=getche();
			  c4=getche();
			  for(n=1;n<3;n++)
			  {if(((c3!='0')&&(c3!='1'))||((c4!='1')&&(c4!='2')))
			  {printf("\nPlease input again:0-1 and 1-2!\n");
			  c3=getche();
			  c4=getche();n--;
			  }}
			  r2[2*(cwwz-1)]=c3;r2[2*cwwz-1]=c4;
			  printf("\nif there is another wrong code press key g to go on or press key q to exit\n");
			  for(n=1;n<2;n++)
			  {c2=getche();
			  switch(c2) {
			  case 'q':goon=0;break;
			  case 'g':goon=1;break;
			  default :printf("\nWrong select!!Please input again:g or q!\n");n--;
			  }
			  
			  }
		  } while(goon==1);
	  }
	  getche();
  }
  

⌨️ 快捷键说明

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