#include<iostream>
using namespace std;
#define maxsize 12500
#define elemtype int
#define TRUE 1
#define FALSE 0
#define OK 1;
#define ERROR -1
typedef struct
{
int i,j;
elemtype e;
}triplet;
typedef struct
{
triplet date[maxsize+1];
int mu,nu,tu;
}tsmatrix;
void fasttransposesmatrix(tsmatrix M,tsmatrix &T)
{
T.mu=M.nu;
T.nu=M.mu;
T.tu=M.tu;
if(T.tu)
{
int col;
int num[100],cpot[100];
for(col=0;col<M.nu;col++)
num[col]=0;
for(int t=0;t<M.tu;t++)
++num[M.date[t].j];
cpot[0]=0;
for(col=1;col<M.nu;col++)
cpot[col]=cpot[col-10]+num[col-1];
int q;
for(int p=0;p<M.tu;p++)
{
col=M.date[p].j;
q=cpot[col];
T.date[q].i=M.date[p].j;
T.date[q].j=M.date[p].i;
T.date[q].e=M.date[p].e;
++cpot[col];
}
}
}
int main()
{
tsmatrix M,T;
cout<<"请输入M的行数"<<endl;
cin>>M.mu;
cout<<"请输入M的列数"<<endl;
cin>>M.nu;
int x,y,z;
M.tu=0;
elemtype i;
for(i=0;M.date[i].j<M.nu;i++)
{
cout<<"请输入元素的行数列数和元素"<<endl;
cin>>x>>y>>z;
M.date[i].i=x;M.date[i].j=y;M.date[i].e=z;
M.tu++;
}//三元组,输入矩阵
fasttransposesmatrix(tsmatrix M,tsmatrix &T);
elemtype t;
for(t=0;t<M.tu;t++)
cout<<T.date[t].i<<endl<<T.date[t].j<<endl<<T.date[t].e<<endl;
return 0;
}
fasttransposesmatrix(tsmatrix M,tsmatrix &T);
改为
fasttransposesmatrix(M,&T);
main函数里调用处 fasttransposesmatrix(tsmatrix M,tsmatrix &T);
改为 fasttransposesmatrix(M, T);
一是调用处不要参数类型,二是引用传值是就给变量就可以了,不要加&取地址。
附注:求赞助积分和C币。加入CSDN将近20年了。最近几年忙小孩没登录。刚才搜索到一本电子书想下载,需要20积分/C币。赞助多少都可以。多谢。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
main函数里调用处 fasttransposesmatrix(tsmatrix M,tsmatrix &T);
改为 fasttransposesmatrix(M, T);
一是调用处不要参数类型,二是引用传值是就给变量就可以了,不要加&取地址。下面代码已经通过。你试一下吧。
#include<iostream>
using namespace std;
#define maxsize 12500
#define elemtype int
#define TRUE 1
#define FALSE 0
#define OK 1;
#define ERROR - 1
typedef struct {
int i, j;
elemtype e;
}
triplet;
typedef struct {
triplet date[maxsize + 1];
int mu, nu, tu;
}
tsmatrix;
void fasttransposesmatrix(tsmatrix M, tsmatrix & T) {
T.mu = M.nu;
T.nu = M.mu;
T.tu = M.tu;
if (T.tu) {
int col;
int num[100], cpot[100];
for (col = 0; col < M.nu; col++)
num[col] = 0;
for (int t = 0; t < M.tu; t++)
++num[M.date[t].j];
cpot[0] = 0;
for (col = 1; col < M.nu; col++)
cpot[col] = cpot[col - 10] + num[col - 1];
int q;
for (int p = 0; p < M.tu; p++) {
col = M.date[p].j;
q = cpot[col];
T.date[q].i = M.date[p].j;
T.date[q].j = M.date[p].i;
T.date[q].e = M.date[p].e;
++cpot[col];
}
}
}
int main() {
tsmatrix M, T;
cout << "请输入M的行数" << endl;
cin >> M.mu;
cout << "请输入M的列数" << endl;
cin >> M.nu;
int x, y, z;
M.tu = 0;
elemtype i;
for (i = 0; M.date[i].j < M.nu; i++) {
cout << "请输入元素的行数列数和元素" << endl;
cin >> x >> y >> z;
M.date[i].i = x;
M.date[i].j = y;
M.date[i].e = z;
M.tu++;
} //三元组,输入矩阵
fasttransposesmatrix(M, T);
elemtype t;
for (t = 0; t < M.tu; t++)
cout << T.date[t].i << endl << T.date[t].j << endl << T.date[t].e << endl;
return 0;
}