用c++ 输入一个稀疏矩阵,,并转置,输出转置前后的三元组

2024-11-02 02:19:32
推荐回答(2个)
回答(1):

#include
using std::cout;
using std::cin;
using std::endl;
struct node
{
int r;//行标
int c;//列标
double dat;//数据
};
class triple
{
private:
int row;//行数
int col;//列数
int num;//非零个数
node *ptr;//存放数组的首地址
public:
triple(int co,int ro,int nu):col(co),row(ro),num(nu)
{
ptr=new node[num];//分配num,盛放num个元素
cout<<"请输入"< for(int i=0;i {
cin>>ptr[i].r;
cin>>ptr[i].c;
cin>>ptr[i].dat;
}
}
~triple(){delete[]ptr;}
void print()
{
int flag=ptr[0].r;
cout<<"第"< for(int i=0;i {
if(ptr[i].r!=flag)
{
cout<<"\n";
flag=ptr[i].r;
cout< cout<<"第"< }
cout<<"("< }
}
void transpose()
{
int flag=0;
for(int i=1;i<=col;i++)
{
for(int j=0;j {
if(ptr[j].c==i)
{
if(flag!=ptr[j].c)
{
flag=ptr[j].c;
cout<<"\n第"< }
cout<<"("< }
}
}
}
};
void main()
{
cout<<"请输入数组的行列和元素个数:\n";
int a[3];
for(int i=0;i<3;i++)
{
cin>>a[i];
}
triple t(a[0],a[1],a[2]);
t.print();//输出原矩阵
cout<<"转制后的矩阵为:";
t.transpose();
}

回答(2):

有bug。。。。。。。。。。。。。。。。。。。