急急急!!!明天要交C语言实验报告。。。求各位大侠帮帮忙!!重分儿!

用稀疏矩阵三元组求C(x)!!!!!求各位大侠帮帮!!!!!!!明天之前要叫出来。。。C程序!
邮箱在这里![email protected]
要一个可执行的.C文件,以及全部的程序!!!!!!急啊。。。TAT

将他看成一个矩阵,没有的地方补零,visual c++ 6.0 编译通过
#include"stdio.h"//方阵稀疏矩阵相加
#define MAXSIZE 100
void main()
{
int n,m,count_a,count_b,col,count_c=0,t1=0,t2=0,t=0,v;
printf("函数功能:实现两个稀疏矩阵A和B的相加,结果存放在稀疏矩阵C中\n");
printf("-------------------------------------------------------------\n");
typedef struct node

{
int i,j,e;//非零元的行列下标,值
}elem;
typedef struct
{
elem data[MAXSIZE];//三元组表
int mu,nu,tu;
}p;
p a,b,c;
printf("\n请输入矩阵行列数:");//输入数组的行列数
scanf("%d",&col);
printf("\n请输入a中非零元的个数:");//输入a中非零元个数
scanf("%d",&count_a);
printf("按照行,列,数据输入:\n");//输入a的数据
for(n=0;n<count_a;n++)
scanf("%d %d %d",&(a.data[n].i),&(a.data[n].j),&(a.data[n].e));
a.mu=col;
a.nu=col;
a.tu=count_a;
printf("\n请输入b中非零元的个数:");//输入b中非零元个数
scanf("%d",&count_b);
printf("按照行,列,数据输入:\n");//输入b的数据
for(m=0;m<count_b;m++)
scanf("%d %d %d",&((b.data[m]).i),&((b.data[m]).j),&((b.data[m]).e));
b.mu=col;
b.nu=col;
b.tu=count_b;
printf("------------------a矩阵如下-----------------\n");//打印a数组
printf(" i j e \n");
for(n=0;n<count_a;n++)
printf(" %d %d %d\n",a.data[n].i,a.data[n].j,a.data[n].e);
printf("---------------------------------------------\n");
printf("\n\n------------------b矩阵如下-----------------\n");//打印b数组
printf(" i j e \n");
for(n=0;n<count_b;n++)
printf(" %d %d %d\n",b.data[n].i,b.data[n].j,b.data[n].e);
printf("----------------------------------------------------\n");
while(t1<a.tu&&t2<b.tu)//计算算法
{
if(a.data[t1].i==b.data[t2].i)
{
if(a.data[t1].j==b.data[t2].j)
{
v=a.data[t1].e+b.data[t2].e;
if(v!=0)
{
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=v;
t++;t1++;t2++;count_c++;
}
else
{
t1++;t2++;
}
}
else if(a.data[t1].j<b.data[t2].j)
{
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=a.data[t1].e;
t++;t1++;count_c++;
}
else
{

c.data[t].i=b.data[t2].i;
c.data[t].j=b.data[t2].j;
c.data[t].e=b.data[t2].e;
t++;t2++;count_c++;
}
}

else if(a.data[t1].i<b.data[t2].i)
{

c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=a.data[t1].e;
t++;t1++;count_c++;
}
else
{
c.data[t].i=b.data[t2].i;
c.data[t].j=b.data[t2].j;
c.data[t].e=b.data[t2].e;
t++;t2++;count_c++;
}
}

while(t1<a.tu)
{
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=a.data[t1].e;
t++;t1++;count_c++;
}
while(t2<b.tu)
{
c.data[t].i=b.data[t2].i;
c.data[t].j=b.data[t2].j;
c.data[t].e=b.data[t2].e;
t++;t2++;count_c++;
}
printf("\n\n------------------c矩阵如下-----------------\n");//打印c数组
printf(" i j e \n");
for(n=0;n<count_c;n++)
printf(" %d %d %d\n",c.data[n].i,c.data[n].j,c.data[n].e);
printf("---------------------------------------------\n");
printf("-------------------------------------------------------------\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-06
还真没有
相似回答