| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:矩阵转置问题
只看楼主 加入收藏
山水之寓
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-28
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:2 
矩阵转置问题
#include<stdio.h>
typedef int status;
typedef struct
{
    int i,j;
    int e;
}Triple;
typedef struct
{
    Triple data[100];
    int mu,nu,tu;
}TSM;

status INPUT_MAT(TSM *M)//输入
{
    int i,j,e,n;
    n=1;
    printf("请输入矩阵的行,列\n");
    scanf("%d%d",&M->mu,&M->nu);
    printf("请输入矩阵的非零元,按行·列·数据的顺序。当i=0时结束\n");
    scanf("%d%d%d",&i,&j,&e);
    if(i>M->mu ||j>M->nu)return 0;
    while(i!=0)
    {
        M->data[n].i=i;
        M->data[n].j=j;
        M->data[n].e=e;
        n++;
        scanf("%d%d%d",&i,&j,&e);
        if(i>M->mu ||j>M->nu)return 0;
    }
    M->tu=n-1;
    return 0;
}

status OUTPUT_MAT(TSM *M)//输出
{
    int i,j,n;
    n=1;
    for(i=1;i<=M->mu;i++)
    {
        for(j=1;j<=M->nu;j++)
            if(M->data[n].i==i && M->data[n].j==j)
            {
                printf("%d  ",M->data[n].e);
                n++;
            }
            printf("\n");
    }
    return 0;
}

status Transpose(TSM *M,TSM *T)//转置
{
    int i,j,n,m=1;
    n=1;
    printf("转置前的矩阵\n");
    OUTPUT_MAT(M);
    T->mu=M->nu;
    T->nu=M->mu;
    T->tu=M->tu;
   
    for(j=1;j<=M->nu;j++)
    {
        while(n<=M->tu)
        {
            if(M->data[n].j==j)
            {
                T->data[m].i=M->data[n].j;
                T->data[m].j=M->data[n].i;
                T->data[m].e=M->data[n].e;
                m++;
                n++;
            }
            else n++;
        }
        n=1;
    }
    printf("转置后的矩阵\n");
    OUTPUT_MAT(T);
    return 0;
}

/*status ADD(int m ,int w,TSM *Q)//加法
{
    //TSM P,*Q;
    int i,j,n=1;
    int a[100][100],b[100][100],c[100][100];
    //Q=&P;
    for(i=0;i<m;i++)
    {
        for(j=0;j<w;j++)
        {
            scanf("%d%d",&a[i][j],&b[i][j]);
            c[i][j]=a[i][j]+b[i][j];
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<w;j++)
        {
            if(c[i][j]!=0)
            {
                Q->data[n].i=i;
                Q->data[n].j=j;
                Q->data[n].e=c[i][j];
                n++;
            }
        }
    }
    OUTPUT_MAT(Q);
    return 0;
}*/


void main()
{
    TSM A,B,P,*Q,*M,*T;
    M=&A;
    T=&B;
    Q=&P;
    printf("矩阵的输入");
    INPUT_MAT(M);
    printf("你创建的矩阵为\n");
    OUTPUT_MAT(M);
    printf("矩阵的转置\n");
    Transpose(M,T);
}



这个代码中的矩阵转置函数怎么实现不了?
搜索更多相关主题的帖子: status return include 
2013-06-10 17:07
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:8 
矩阵转置就是b[i][j]=a[j][i],本身不难;
你看看是转置函数没有实现还是函数调用的问题,在函数内部打印看看

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-06-11 06:48
嗜血老妖
Rank: 3Rank: 3
来 自:江西
等 级:论坛游侠
威 望:2
帖 子:102
专家分:163
注 册:2013-3-25
收藏
得分:2 

仗剑走天涯,网络论英雄。
2013-06-11 07:29
快速回复:矩阵转置问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034370 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved