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

📄 fe.c

📁 求解模糊等价矩阵的源代码,可以通过它来示模糊等价矩阵
💻 C
字号:
/*求模糊等价矩阵的C语言程序*/

#include "stdio.h"
#include "conio.h"
int M,N;

/*分配内存空间函数*/
double * *mat_alloc(int nrows,int ncols)
{
   double * *mat;
   int i;
   mat = (double * *)malloc(sizeof(double *)*nrows);
   for(i=0;i<nrows;i++)
      {
       mat[i]=(double *)malloc(sizeof(double)*ncols);
      }
   return(mat);
}


main() 
{
	double * *R,*A,* *R1,*B;
	
	int i,j,i_max;
	double max,min;
	float b;
	int p;
	
	printf("input the param M and N:");
	scanf("%d%d",&M,&N);
	/*输入矩阵R*/
	printf("input the matrix R:M and N\n");
	
	R = mat_alloc(M,N);
	
	for(i=0;i<M;i++)
	 for(j=0;j<N;j++)
	 {
	 	 scanf("%f",&b);
	 	 R[i][j] = (double)b;
	 	 }
	 	     
	printf("\n");
	
	printf("input the matrix A:M\n");
	
	A = (double *)malloc(M*sizeof(double));
	
	for(i=0;i<M;i++)
	{
		scanf("%f",&b);
	 	A[i] = (double)b;
		}
	 	  	     
	printf("\n");
	
	printf("output the matrix R:\n");
	    for(i=0;i<M;i++)
	    {
	    	for(j=0;j<N;j++)
	    	   printf("%7.3f",R[i][j]);
	    	
	    	printf("\n");
	    	}
	    
	getch();
	
	R1 = mat_alloc(M,N);
	B = (double *)malloc(N*sizeof(double));
	
	/*输入选择评判模型的参数p*/
	printf("input the param p:");
	scanf("%d",&p);
	printf("\n");
	
	switch(p)
	{
		case 1:
			for(i=0;i<M;i++)
	     for(j=0;j<N;j++)
	     {
	     	if(A[i] >= R[i][j]) R1[i][j] = R[i][j];
	     	else R1[i][j] = A[i];
	     	}
	     	
	    for(j=0;j<N;j++)
	    {
	    	max = 0;
	    	for(i=0;i<M;i++)
	    	 if(R1[i][j] > max) max = R1[i][j];
	    	B[j] = max;
	    	}
	    	
	    break;
	    
	  case 2:
	  	for(i=0;i<M;i++)
	     for(j=0;j<N;j++)
	     {
	     	R1[i][j] = A[i]*R[i][j];
	     	}
	     	
	    for(j=0;j<N;j++)
	    {
	    	max = 0;
	    	for(i=0;i<M;i++)
	    	 if(R1[i][j] > max) max = R1[i][j];
	    	B[j] = max;
	    	}
	    	
	    break;
	    
	  case 3:
	  	for(i=0;i<M;i++)
	     for(j=0;j<N;j++)
	     {
	     	if(A[i] >= R[i][j]) R1[i][j] = R[i][j];
	     	else R1[i][j] = A[i];
	     	}
	     	
	    for(j=0;j<N;j++)
	    {
	    	max = 0;
	    	for(i=0;i<M;i++)
	    	 max += R1[i][j];
	    	if(max > 1) B[j] = 1;
	    	else B[j] = max;
	    	}
	    	
	    break;
	  
	  case 4:
	  	for(i=0;i<M;i++)
	     for(j=0;j<N;j++)
	     {
	     	R1[i][j] = A[i]*R[i][j];
	     	}
	     	
	    for(j=0;j<N;j++)
	    {
	    	max = 0;
	    	for(i=0;i<M;i++)
	    	 max += R1[i][j];
	    	if(max > 1) B[j] = 1;
	    	else B[j] = max;
	    	}
	    	
	    break;
	    
	  case 5:
	  	for(i=0;i<M;i++)
	     for(j=0;j<N;j++)
	     {
	     	R1[i][j] = A[i]*R[i][j];
	     	}
	     	
	    for(j=0;j<N;j++)
	    {
	    	B[j] = 0;
	    	for(i=0;i<M;i++)
	    	 B[j] += R1[i][j];
	    	}
	    	
	    break;
	    
	  case 6:
	  	for(i=0;i<M;i++)
	     for(j=0;j<N;j++)
	     {
	     	R1[i][j] = pow(R[i][j],A[i]);
	     	}
	     	
	    for(j=0;j<N;j++)
	    {
	    	min = R1[0][j];
	    	for(i=0;i<M;i++)
	    	 if(R1[i][j] < min) min = R1[i][j];
	    	B[j] = min;
	    	}
	    	
	    break;
		}/*end switch*/
	
	printf("output the matrix R1:\n");
	for(i=0;i<M;i++)
	{
	 for(j=0;j<N;j++)
	    printf("%7.3f",R1[i][j]);
	    	
	 printf("\n");
	 }
	    
	getch();
	
	printf("output B:\n");
	
	max = 0;
	i_max = 0;
	for(j=0;j<N;j++)
	{
		printf("%7.3f",B[j]);
		if(B[j] > max)
			{
				max = B[j];
				i_max = j;
				}
		}
	printf("\n");
	
	printf("B the best is %d\n",i_max);
	
	getch();
	
	free(R);
	free(R1);
	free(A);
	free(B);
	
	}/*end main*/

⌨️ 快捷键说明

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