分区分组配置.c

来自「移动通信信道配置两种方式的C语言实现」· C语言 代码 · 共 82 行

C
82
字号
/* Note:Your choice is C IDE */
#include "stdio.h"

void fenpei();  /*用于信道分配*/
int panduan();  /*用于判断是否满足无三阶互调干扰*/
void printtt(); /*用于输出配置结果*/

int i,n,j,B[15],A[8][8],k,m,qq,pp=0;

main()
{
	int pan;
    fenpei();
    pan=panduan();
    while(pan==0)
       {
       	fenpei();
       	pan=panduan();
       } 
    printtt();
}

void fenpei()
{
   srand(time(NULL));
   for(i=0;i<12;i++)
   {
     n=rand()%12+1;
     if(i==0)
       B[i]=n;
     for(j=0;j<i;j++)
      {
        if(B[j]==n)
          {i--;
           break;}
      }
     if(j==i)B[i]=n;
   }
   i=0;
   for(k=0;k<3;k++)
     for(m=0;m<4;m++)
        {
        	A[k][m]=B[i];
        	i++;
        	}
}

int panduan()
{
	for(k=0;k<3;k++)
      for(m=0;m<4;m++)
         {
         	if((2*A[k][m]==A[k][m%3]+A[k][(m+1)%3])||
         	   (2*A[k][m]==A[k][m%3]+A[k][(m+2)%3])||
         	   (2*A[k][m]==A[k][(m+1)%3]+A[k][(m+2)%3])||
         	   (A[k][(m+1)%3]+A[k][m]==A[k][m%3]+A[k][(m+2)%3]))
         	   {pp=1;
         	   	break;}
         }
    if(pp==1)qq=1;
    else 
      qq=0;
    return qq;
 }
         	   
void printtt()
{
	printf("distribute channel:\n");
	printf("first section:");
    for(m=0;m<4;m++)
      {printf("%5d",A[0][m]);}
    printf("\n");
    printf("secon section:");
    for(m=0;m<4;m++)
      {printf("%5d",A[1][m]);}
    printf("\n");
    printf("third section:");
    for(m=0;m<4;m++)
      {printf("%5d",A[2][m]);} 
}                	

⌨️ 快捷键说明

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