Esempio n. 1
0
 /* main5-3.c 检验bo5-3.c的主程序(与main5-2.c很相像) */
 #include"c1.h"
 typedef int ElemType;
 #include"c5-3.h" /* 此行与main5-2.c不同 */
 #include"bo5-3.c" /* 此行与main5-2.c不同 */
 void main()
 {
   RLSMatrix A,B,C; /* 此行与main5-2.c不同 */
   printf("创建矩阵A: ");
   CreateSMatrix(&A);
   PrintSMatrix(A);
   printf("由矩阵A复制矩阵B:\n");
   CopySMatrix(A,&B);
   PrintSMatrix1(B);
   DestroySMatrix(&B);
   printf("销毁矩阵B后:\n");
   PrintSMatrix1(B);
   printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)\n",A.mu,A.nu);
   CreateSMatrix(&B);
   PrintSMatrix1(B);
   AddSMatrix(A,B,&C);
   printf("矩阵C1(A+B):\n");
   PrintSMatrix1(C);
   SubtSMatrix(A,B,&C);
   printf("矩阵C2(A-B):\n");
   PrintSMatrix1(C);
   TransposeSMatrix(A,&C);
   printf("矩阵C3(A的转置):\n");
   PrintSMatrix1(C);
   printf("创建矩阵A2:");
   CreateSMatrix(&A);
   PrintSMatrix1(A);
   printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)\n",A.nu);
   CreateSMatrix(&B);
   PrintSMatrix1(B);
   MultSMatrix(A,B,&C);
   printf("矩阵C5(A×B):\n");
   PrintSMatrix1(C);
 }
Esempio n. 2
0
 void main()
 {
   CrossList A,B,C;
   InitSMatrix(A); // CrossList类型的变量在初次使用之前必须初始化
   InitSMatrix(B);
   printf("创建矩阵A: ");
   CreateSMatrix(A);
   PrintSMatrix(A);
   printf("由矩阵A复制矩阵B: ");
   CopySMatrix(A,B);
   PrintSMatrix(B);
   DestroySMatrix(B); // CrossList类型的变量在再次使用之前必须先销毁
   printf("销毁矩阵B后,矩阵B为:\n");
   PrintSMatrix1(B);
   printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)\n",A.mu,A.nu);
   CreateSMatrix(B);
   PrintSMatrix1(B);
   printf("矩阵C1(A+B):\n");
   AddSMatrix(A,B,C);
   PrintSMatrix1(C);
   DestroySMatrix(C);
   printf("矩阵C2(A-B):\n");
   SubtSMatrix(A,B,C);
   PrintSMatrix1(C);
   DestroySMatrix(C);
   printf("矩阵C3(A的转置):\n");
   TransposeSMatrix(A,C);
   PrintSMatrix1(C);
   DestroySMatrix(A);
   DestroySMatrix(B);
   DestroySMatrix(C);
   printf("创建矩阵A2: ");
   CreateSMatrix(A);
   PrintSMatrix1(A);
   printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)\n",A.nu);
   CreateSMatrix(B);
   PrintSMatrix1(B);
   printf("矩阵C5(A×B):\n");
   MultSMatrix(A,B,C);
   PrintSMatrix1(C);
   DestroySMatrix(A);
   DestroySMatrix(B);
   DestroySMatrix(C);
 }
Esempio n. 3
0
Status MultSMatrix(TSMatrix M, TSMatrix N, TSMatrix &Q)
{
	int i, j, q, p;
	ElemType Qs;
	TSMatrix T;

	if (M.nu != N.mu)
		return ERROR;
	Q.mu = M.mu;
	Q.nu = N.nu;
	Q.tu = 0;
	TransposeSMatrix(N, T);
	for (i = 1; i <= Q.mu; i++) {
		q = 1;
		for (j = 1; j <= T.mu; j++) {
			Qs = 0;
			p = 1;
			while (M.data[p].i < i)
				p++;
			while (T.data[q].i < j)
				q++;
			while (p <= M.tu && q <= T.tu && M.data[p].i == i && T.data[q].i == j)

				switch (comp(M.data[p].j, T.data[q].j)) {
				case -1: p++;
					break;

				case  0: Qs += M.data[p++].e * T.data[q++].e;
					break;
				case  1: q++;
				}
			if (Qs) {
				if (++Q.tu > MAX_SIZE)
					return ERROR;
				Q.data[Q.tu].i = i;
				Q.data[Q.tu].j = j;
				Q.data[Q.tu].e = Qs;
			}
		}
	}
	return OK;
}