这个primary-expression怎么搞啊

#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;
}