/ ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
typedef struct
{
int i,j;
int e;
}Triple;
typedef struct
{
Triple data[100];
int mu,nu,tu;
}SparseMatrix;
void CreateMatrix(SparseMatrix &M)
{
cout<<"请输入矩阵行数:";
cin>>M.mu;
cout<<"请输入矩阵列数:";
cin>>M.nu;
cout<<"请输入非零元素个数:";
cin>>M.tu;
cout<<"请输入非零元素(输入格式为:行号 列号 元素值):\n";
for(int p=1;p<=M.tu;p++)
cin>>M.data[p].i>>M.data[p].j>>M.data[p].e;
}
void ShowMatrix(SparseMatrix&M)
{
int p=1;
if (M.nu)
{
for(int i=1;i<=M.mu;i++)
{
for(int j=1;j<=M.nu;j++)
{
if(i==M.data[p].i&&j==M.data[p].j)
{
cout<<M.data[p].e<<" ";
p++;
}
else
cout<<0<<" ";
}
cout<<endl;
}
}
}
void TransMatrix(SparseMatrix&M,SparseMatrix&N)
{
N.mu=M.nu;
N.nu=M.mu;
N.tu=M.tu;
if(N.tu)
{
int n=1;
for(int i=1;i<=M.mu;i++)
for(int m=1;m<=M.tu;m++)
{
if(M.data[m].i==i)
{
N.data[n].i=M.data[m].j;
N.data[n].j=M.data[m].i;
N.data[n].e=M.data[m].e;
n++;
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
SparseMatrix M,N;
CreateMatrix(M);
cout<<endl<<"显示创建的行列式:"<<endl;
ShowMatrix(M);
TransMatrix(M,N);
cout<<endl<<"转置后的行列式为:"<<endl;
ShowMatrix(N);
getchar();
return 0;
}
他这个转置代码哪里有漏洞啊?测数据转置一直有问题