- 3
- 0
- 约4.32千字
- 约 5页
- 2018-03-08 发布于河南
- 举报
100303 郝明(实验四)
实验四 数组的运算
实验目的:
掌握稀疏矩阵的压缩存储方法及主要运算的实现。
实验内容与要求:
设计一个稀疏矩阵计算器,要求能够:⑴输入并建立稀疏矩阵;⑵输出稀疏矩阵;⑶执行两个矩阵相加;⑷执行两个矩阵相乘
算法设计:
// 文件名称:100303 郝明(实验)
//郝明 1301100303
//2012年4月日 :42
//程序中包括
//参考教学PPT 3.13
//
#include stdio.h
#define smax 16 //非0元素个数
typedef int datatype;
typedef struct
{ int i,j; //行下标、列下标
datatype v; //元素的值
}node;
typedef struct
{ node data[2*smax];//乘2考虑到矩阵相加的情况
int m,n,t; //行数、列数、非0元素个数
}spmatrix;
spmatrix matrix[2],result,*r=result;
spmatrix *SORT(spmatrix *a){
int x,y;
node temp;
for(x=0;xa-t;x++)
for(y=x+1;ya-t;y++)
if(a-data[x].i=a-data[y].i)
if(a-data[x].ja-data[y].j){
temp=a-data[x];
a-data[x]=a-data[y];
a-data[y]=temp;
}
return a;
}
spmatrix *BUILD(spmatrix *a)
{
int x,y,temp_i,temp_j,temp_v;
a-t=0;
printf(请输入非0元素信息,格式(行号 列号 数值)最多%d个,行号或列号输入0则结束\n,smax);
do {
printf(第%d个非0元素:,a-t+1);
scanf(%d %d %d,temp_i,temp_j,temp_v);
if(temp_i==0||temp_j==0) break;
a-data[a-t].i=temp_i;
a-data[a-t].j=temp_j;
a-data[a-t].v=temp_v;
a-t++;
} while(a-tsmax);
printf(请输入矩阵的行数:);scanf(%d,a-m);
printf(请输入矩阵的列数:);scanf(%d,a-n);
//检查是否有非0元素的行号和列号超出范围
for(x=0;xa-t;x++)
if(a-data[x].ia-m||a-data[x].ja-n){
printf(ERROR.);
return NULL;
}
SORT(a);
return a;
}
void OUTPUT(spmatrix *a){
int x,y,z=0;
int s[a-m][a-n];
for(x=0;xa-m;x++)
for(y=0;ya-n;y++)
s[x][y]=0;
while(za-t){s[a-data[z].i-1][a-data[z].j-1]=a-data[z].v;z++;}
for(x=0;xa-m;x++){
for(y=0;ya-n;y++) printf(%d ,s[x][y]);
printf(\n);
}
}
spmatrix *PLUS(spmatrix *a,spmatrix *b){
int x,y=0,z=0;
node *p,*q;
spmatrix *temp=result;
temp-m=a-mb-m?a-m:b-m;
temp-n=a-nb-n?a-n:b-n;
temp-t=a-t+b-t;
while(za-t) {temp-data[z]=a-data[z];z++;}
for(x=0;xa-t;x++)
while(yb-t){
if(a-data[x].i==b-data[y].i)
if(a-data[x].j==b-data[y].j){
temp-data[x].v=a-data[x].v+b-data[y++].v;
temp-t--;
break;
}
else if(a-data[x].jb-data[y].j) {temp-data[z++]=b-data[y++];}
else break;
else if(b-data[y].ia-data[x].i)
您可能关注的文档
最近下载
- 部编版语文五年级下册第二单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第一单元教材解读大单元集体备课.pptx VIP
- 车工 (数控车床)理论知识考核要素细目表四级.pdf VIP
- 本科课程《基础护理学》教案,第十二章给药.doc VIP
- 农村题材小品剧本村官.pdf VIP
- 小品剧本-小品《绰号》.docx VIP
- 小品剧本-小品《竞选》.docx VIP
- 本科课程基础护理学教给药教案(2025—2026学年).docx VIP
- LaserjetCP1025系列打印机打印质量故障排除手册.pdf VIP
- 年会小品剧本小品剧本:搞笑小品剧本《都是喝酒惹事》台词大全.docx VIP
原创力文档

文档评论(0)