数据结构+课程设计+稀疏矩阵的操作(4)

2018-12-19 21:42

for(i=1;i<=M.mu*N.nu;i++)

*(Qe+i)=0;/* 矩阵Q的第i行j列的元素值存于*(Qe+(M.data[i].i-1)*N.nu+N.data[j].j)中,初值为0 */ for(i=1;i<=M.tu;i++) /* 结果累加到Qe */ for(j=1;j<=N.tu;j++)

if(M.data[i].j==N.data[j].i)

*(Qe+(M.data[i].i-1)*N.nu+N.data[j].j)+=M.data[i].e*N.data[j].e;

for(i=1;i<=M.mu;i++) /*Qe矩阵中,因为M的每一行和N的每一列相乘都是T的一个元素,不管它是零或非零 */

for(j=1;j<=N.nu;j++) /*当M的第一行和N的第一列相乘则得T的第一个元素;当M的第一行和N的第二列相乘则得T的第二个元素;…… */

if(*(Qe+(i-1)*N.nu+j)!=0) /*……当M的第i行和N的第j列相乘则得T的第p个元素;根据归纳法得p=(i-1)*N的列数+j */

{

Qn++;//非零元个数加一

T->data[Qn].e=*(Qe+(i-1)*N.nu+j); T->data[Qn].i=i; T->data[Qn].j=j; }

free(Qe); T->tu=Qn; return ;

} main() { RLSMatrix M,N,Q;

char ch; printf(\ *************************** \\n\

printf(\ ** ** \\n\printf(\ ** 稀疏矩阵运算器 ** \\n\printf(\ ** --------------------- ** \\n\printf(\printf(\printf(\printf(\

*************************** \\n\ _____________________________________________________________________ \\n\ | 请选择 | \\n\ | A.加法 B.减法 C.乘法 D.转置 Y.继续运算 N.结束运算 | \\n\

printf(\ |_____________________________________________________________________| \\n\\n\

printf(\输入数字时请用逗号隔开!\\n\\n\

printf(\ ->\

scanf(\

while(ch!='N'){//进行循环运算

switch(ch){//进行运算选择 case'A':{ printf(\ 请输入要求和的两个矩阵:\\n\\n\

printf(\ 输入第一个矩阵:\\n\\n\

ScanRLSMatrix(&M);

printf(\ 输入的第一个矩阵为:\\n\\n\

PrintRLSMatrix(M);

printf(\ 输入第二个矩阵:\\n\\n\ ScanRLSMatrix(&N);

printf(\ 输入的第二个矩阵为:\\n\\n\ PrintRLSMatrix(N);

HeRLSMatrix(&M,&N,&Q);

printf(\ 两矩阵之和为:\\n\\n\ PrintRLSMatrix(Q);

printf(\ 是否继续运算(Y/N)?\\n\\n\ printf(\ ->\

ch=getchar(); };break;

case'B':{ printf(\ 请按次序输入要求差的两个矩阵:\\n\\n\ printf(\ 输入第一个矩阵:\\n\\n\

ScanRLSMatrix(&M);

printf(\ 输入的第一个矩阵为:\\n\\n\ PrintRLSMatrix(M);

printf(\ 输入第二个矩阵:\\n\\n\ ScanRLSMatrix(&N);

printf(\ 输入的第二个矩阵为:\\n\\n\ PrintRLSMatrix(N);

ChaRLSMatrix(&M,&N,&Q);

printf(\ 两矩阵之差为:\\n\\n\ PrintRLSMatrix(Q);

printf(\是否继续运算(Y/N)?\\n\\n\ printf(\ ->\ ch=getchar();

}break;

case'C':{printf(\ 请按次序输入要求积的两个矩阵:\\n\\n\ printf(\ 输入第一个矩阵:\\n\\n\

ScanRLSMatrix(&M);

printf(\ 输入的第一个矩阵为:\\n\\n\ PrintRLSMatrix(M);

printf(\ 输入第二个矩阵:\\n\\n\ ScanRLSMatrix(&N);

printf(\ 输入的第二个矩阵为:\\n\\n\ PrintRLSMatrix(N);

JiRLSMatrix(M,N,&Q);

printf(\ 两矩阵之积为:\\n\\n\ PrintRLSMatrix(Q);

printf(\是否继续运算(Y/N)?\\n\\n\ printf(\ ->\ ch=getchar(); }break;

case'D':{printf(\请输入要转置的矩阵:\\n\\n\

ScanRLSMatrix(&M); printf(\ 输入的要转置的矩阵为:\\n\\n\ PrintRLSMatrix(M);

FasttransposeRLSMatrix(M,&Q); printf(\转置矩阵为:\\n\\n\

PrintRLSMatrix(Q);

printf(\是否继续运算(Y/N)?\\n\\n\

printf(\ ->\

ch=getchar();

}break;

case'Y':{printf(\请选择运算\\n\ printf(\ ->\ ch=getchar();

}break;

default:printf(\

}

}

printf(\ 运算结束!\\n\\n\printf(\ \\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1

用!\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1\\n\\n\getch(); }

使

开始 用户选择计算类型 键入A 加法运算 键入D 转置运算 显示结果 Y 继续计算 等待用户键入 N 结束运算


数据结构+课程设计+稀疏矩阵的操作(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电大《公共政策概论》(新版)形成性考核册参考答案4(新)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: