回 帖 发 新 帖 刷新版面

主题:我是初学者,希望好心人帮帮忙!谢谢了!

[em8]稀疏矩阵加法的程序,我自己写的,大虾门不要见笑~!呵呵~
用的是三元组,编译成功了,可是没有运行结果,希望大家帮帮我!谢谢!
 
代码:::


    #define MAXSIZE 12500
#include<stdio.h>
#include<stdlib.h>
typedef struct{
         int i,j;
         int e;
    }Triple;
typedef struct{
      Triple data[MAXSIZE+1];
      int mu,nu,tu;
      }TSMatirx;
main()
{int p,q,n,k;
 TSMatirx M,N,L;
 printf("请输入矩阵M的行数,列数和非零元的个数:");
 scanf("%d%d%d",&M.mu,&M.nu,&M.tu);
 printf("请输入矩阵N的行数,列数和非零元的个数:");
 scanf("%d%d%d",&N.mu,&N.nu,&N.tu);
 if(M.mu!=N.mu||M.nu!=N.nu)  
 {  printf("输入错误");
    exit(0);}
 for(p=1;p<=M.tu;p++)
 {  printf("请输入M的第%d个非零元:",p);
    scanf("%d%d%d",&M.data[p].i,&M.data[p].j,&M.data[p].e);
    if(p>=2){if(M.data[p].i<M.data[p-1].i) 
                 {  printf("输入错误");
                    exit(0);}
              else 
                if(M.data[p].i==M.data[p-1].i&&M.data[p].j<M.data[p-1].j)
                    { printf("输入错误");
                      exit(0);}
            } 
 }    
for(q=1;q<=N.tu;q++)
{   printf("请输入N的第%d个非零元:",q);
    scanf("%d%d%d",&N.data[q].i,&N.data[q].j,&N.data[q].e);
    if(q>=2){if(N.data[q].i<N.data[q-1].i) 
                 {  printf("输入错误");
                    exit(0);}
                else 
                 if(N.data[q].i==N.data[q-1].i&&N.data[q].j<N.data[q-1].j)
            {  printf("输入错误");
                  exit(0);}
    }
}
p=1,q=1,n=1;
while (p<=M.tu&&q<=N.tu)
{if(M.data[p].i<N.data[q].i)
   {L.data[n]=M.data[p];
    n++;p++;continue;}
 if(M.data[p].i>N.data[q].i)
   {L.data[n]=N.data[q];
    n++;q++;continue;}
 else if(M.data[p].j<N.data[q].j)
   {L.data[n]=M.data[p];
    n++;p++;continue;}
  if(M.data[p].j>N.data[q].j)
   {L.data[n]=N.data[q];
    n++;q++;continue;}
 else{L.data[n].i=M.data[p].i; 
      L.data[n].j=M.data[p].j;
      L.data[n].e=M.data[p].e+N.data[q].e;
      }
}
if(p!=M.tu)
{ while(p<=M.tu)
    {L.data[n]=M.data[p];
     n++;p++;}
}
if(q!=N.tu)
{ while(q<=N.tu)
    {L.data[n]=N.data[q];
     n++;q++;}
}
printf("L:\n");
for(p=1,k=1;p<=M.mu;p++)
for(q=1;q<=M.nu;q++)
{ if(L.data[k].i==p&&L.data[k].j==q)
  {printf("%d",L.data[k].e);
   k++;}
  else printf("%s",'0');
  if(q==M.nu) printf("\n");
}
    }        

回复列表 (共1个回复)

沙发


怎么没人帮忙啊!
着急ing.....

我来回复

您尚未登录,请登录后再回复。点此登录或注册