?? fe.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 + -