矩阵转置实现的问题
输出转置后的矩阵显示的都是负的大数,帮忙看下在vc6.0中单步的时候,用F11不能进入转置函数,
但是输出原矩阵M没问题,输出转置后的矩阵T就不行了。
//==================矩阵转置==========================
#include <iostream>
using namespace std;
const int MAXSIZE=12500;
const int MAXRC=100;
const int MAX=4;
//===================三元组===========================
typedef struct
{
int i,j;
int e;
}Triple;
//====================矩阵============================
typedef struct
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
//===================矩阵转置=========================
void TransposeSMatrix(TSMatrix M,TSMatrix & T)
{
T.mu=M.nu;
T.nu=M.mu;
T.tu=M.tu;
int q=0;
if(T.tu)
{
// int q=0;
for(int col=1;col<=M.nu;col++)
{
for(int p=1;p<M.tu;p++)
{
if(M.data[p].j==col)
{
T.data[q].i=M.data[p].j;
T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;
++q;
}
}
}
}
for(q=0;q<T.tu;q++)//===========不能输出T===========
{
cout<<T.data[q].i<<T.data[q].j<<T.data[q].e<<endl;
}
}
//====================================================
int main()
{
TSMatrix M,T;
cout<<"Input mu nu tu(M)"<<endl;//输入M
cin>>M.mu>>M.nu>>M.tu;
cout<<"INput value of i j e(M)"<<endl;
//for(int m=0;m<MAX;m++)
for(int m=0;m<M.tu;m++)
{
cin>>M.data[m].i>>M.data[m].j>>M.data[m].e;
}
cout<<"The m your input is:"<<endl;
for(m=0;m<M.tu;m++)//===========输出M矩阵正确===============
{
cout<<M.data[m].i<<M.data[m].j<<M.data[m].e<<endl;
}
cout<<"================================="<<endl;
TransposeSMatrix(M,T);
/* for(int q=0;q<T.tu;q++)//============error===========
{
cout<<T.data[q].i<<T.data[q].j<<T.data[q].e<<endl;
}*/
return 0;
}