就是下面这个Plus函数,程序能运行,可是到调用它的时候会出错,函数里面的语句一句都不执行,什么意思?
#include <iostream>
using namespace std;
typedef struct
{
int col,row,e;
}Triple;
typedef struct
{
Triple data[12500];
int mu,nu,tu;
}TSMatrix;
void SetTSMatrix(TSMatrix &A)
{
int i,j,k,n,m,temp;
cout<<"输入矩阵的行,列,还有非零元素个数:";
cin>>i>>j>>k;
A.mu=i;
A.nu=j;
A.tu=k;
for(n=1;n<=A.tu;n++)
{
cout<<endl<<"输入第"<<n<<"个元素的行号,列号,元素数值:";
cin>>i>>j>>k;
A.data[n].col=i;
A.data[n].row=j;
A.data[n].e=k;
}
for(n=1;n<=A.tu-1;n++)
{
for(m=n+1;m<=A.tu;m++)
{
if(A.data[n].col>A.data[m].col)
{
temp=A.data[n].col;
A.data[n].col=A.data[m].col;
A.data[m].col=temp;
temp=A.data[n].row;
A.data[n].row=A.data[m].row;
A.data[m].row=temp;
temp=A.data[n].e;
A.data[n].e=A.data[m].e;
A.data[m].e=temp;
}
}
}
for(n=1;n<=A.tu-1;n++)
{
for(m=n+1;m<=A.tu;m++)
{
if((A.data[n].col==A.data[m].col)&&(A.data[n].row>A.data[m].row))
{
temp=A.data[n].col;
A.data[n].col=A.data[m].col;
A.data[m].col=temp;
temp=A.data[n].row;
A.data[n].row=A.data[m].row;
A.data[m].row=temp;
temp=A.data[n].e;
A.data[n].e=A.data[m].e;
A.data[m].e=temp;
}
}
}
}
void Plus(TSMatrix A,TSMatrix B,TSMatrix &C)
{
int i,j,p,q,x,y;
if((A.mu<=0)||(A.nu<=0)||(B.mu<=0)||(B.nu<=0))
return;
if((A.mu!=B.mu)||(A.nu!=B.nu))
return;
C.mu=A.mu;
C.nu=A.nu;
C.tu=0;
for(i=1;i<=A.mu;i++)
{
for(j=1;j<=A.nu;j++)
{
for(p=1;p<=A.tu;p++)
{
if((A.data[p].col==i)&&(A.data[p].row==j))
{
x=A.data[p].e;
break;
}
else x=0;
}
for(q=1;q<=B.tu;q++)
{
if((B.data[q].col==i)&&(B.data[q].row==j))
{
y=B.data[q].e;
break;
}
else y=0;
}
if((x+y)!=0)
{
C.tu++;
C.data[C.tu].e=x+y;
C.data[C.tu].col=i;
C.data[C.tu].row=j;
}
}
}
}
void main()
{
int i,j,k,n;
TSMatrix A,B,C,D,E;
SetTSMatrix(A);
SetTSMatrix(B);
Plus(A,B,C);
n=1;
C.data[C.tu+1].e=0;
while(C.data[n].e)
{
cout<<endl<<C.data[n].col<<" "<<C.data[n].row<<" "<<C.data[n].e;
n++;
}
}
#include <iostream>
using namespace std;
typedef struct
{
int col,row,e;
}Triple;
typedef struct
{
Triple data[12500];
int mu,nu,tu;
}TSMatrix;
void SetTSMatrix(TSMatrix &A)
{
int i,j,k,n,m,temp;
cout<<"输入矩阵的行,列,还有非零元素个数:";
cin>>i>>j>>k;
A.mu=i;
A.nu=j;
A.tu=k;
for(n=1;n<=A.tu;n++)
{
cout<<endl<<"输入第"<<n<<"个元素的行号,列号,元素数值:";
cin>>i>>j>>k;
A.data[n].col=i;
A.data[n].row=j;
A.data[n].e=k;
}
for(n=1;n<=A.tu-1;n++)
{
for(m=n+1;m<=A.tu;m++)
{
if(A.data[n].col>A.data[m].col)
{
temp=A.data[n].col;
A.data[n].col=A.data[m].col;
A.data[m].col=temp;
temp=A.data[n].row;
A.data[n].row=A.data[m].row;
A.data[m].row=temp;
temp=A.data[n].e;
A.data[n].e=A.data[m].e;
A.data[m].e=temp;
}
}
}
for(n=1;n<=A.tu-1;n++)
{
for(m=n+1;m<=A.tu;m++)
{
if((A.data[n].col==A.data[m].col)&&(A.data[n].row>A.data[m].row))
{
temp=A.data[n].col;
A.data[n].col=A.data[m].col;
A.data[m].col=temp;
temp=A.data[n].row;
A.data[n].row=A.data[m].row;
A.data[m].row=temp;
temp=A.data[n].e;
A.data[n].e=A.data[m].e;
A.data[m].e=temp;
}
}
}
}
void Plus(TSMatrix A,TSMatrix B,TSMatrix &C)
{
int i,j,p,q,x,y;
if((A.mu<=0)||(A.nu<=0)||(B.mu<=0)||(B.nu<=0))
return;
if((A.mu!=B.mu)||(A.nu!=B.nu))
return;
C.mu=A.mu;
C.nu=A.nu;
C.tu=0;
for(i=1;i<=A.mu;i++)
{
for(j=1;j<=A.nu;j++)
{
for(p=1;p<=A.tu;p++)
{
if((A.data[p].col==i)&&(A.data[p].row==j))
{
x=A.data[p].e;
break;
}
else x=0;
}
for(q=1;q<=B.tu;q++)
{
if((B.data[q].col==i)&&(B.data[q].row==j))
{
y=B.data[q].e;
break;
}
else y=0;
}
if((x+y)!=0)
{
C.tu++;
C.data[C.tu].e=x+y;
C.data[C.tu].col=i;
C.data[C.tu].row=j;
}
}
}
}
void main()
{
int i,j,k,n;
TSMatrix A,B,C,D,E;
SetTSMatrix(A);
SetTSMatrix(B);
Plus(A,B,C);
n=1;
C.data[C.tu+1].e=0;
while(C.data[n].e)
{
cout<<endl<<C.data[n].col<<" "<<C.data[n].row<<" "<<C.data[n].e;
n++;
}
}