| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 904 人关注过本帖
标题:矩阵转置实现的问题
只看楼主 加入收藏
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:1 
矩阵转置实现的问题
输出转置后的矩阵显示的都是负的大数,帮忙看下
在vc6.0中单步的时候,用F11不能进入转置函数,
但是输出原矩阵M没问题,输出转置后的矩阵T就不行了。
//==================矩阵转置==========================
#include <iostream>
using namespace std;

const int MAXSIZE=12500;
const int MAXRC=100;
const int MAX=4;
//===================三元组===========================
typedef struct
{
    int i,j;
    int e;
}Triple;
//====================矩阵============================
typedef struct
{
    Triple data[MAXSIZE+1];
    int mu,nu,tu;
}TSMatrix;
//===================矩阵转置=========================
void TransposeSMatrix(TSMatrix M,TSMatrix & T)
{
    T.mu=M.nu;
    T.nu=M.mu;
    T.tu=M.tu;
    int q=0;
    if(T.tu)
    {
    //    int q=0;
        for(int col=1;col<=M.nu;col++)
        {
            for(int p=1;p<M.tu;p++)
            {
                if(M.data[p].j==col)
                {
                    T.data[q].i=M.data[p].j;
                    T.data[q].j=M.data[p].i;
                    T.data[q].e=M.data[p].e;
                    ++q;
                }
            }
        }
    }
    for(q=0;q<T.tu;q++)//===========不能输出T===========
    {
        cout<<T.data[q].i<<T.data[q].j<<T.data[q].e<<endl;
    }
}
//====================================================
int main()
{
    TSMatrix M,T;
    cout<<"Input mu nu tu(M)"<<endl;//输入M
    cin>>M.mu>>M.nu>>M.tu;
    cout<<"INput value of i j e(M)"<<endl;
    //for(int m=0;m<MAX;m++)
    for(int m=0;m<M.tu;m++)
    {
        cin>>M.data[m].i>>M.data[m].j>>M.data[m].e;
    }
    cout<<"The m your input is:"<<endl;
    for(m=0;m<M.tu;m++)//===========输出M矩阵正确===============
    {
        cout<<M.data[m].i<<M.data[m].j<<M.data[m].e<<endl;
    }
    cout<<"================================="<<endl;
    TransposeSMatrix(M,T);
/*    for(int q=0;q<T.tu;q++)//============error===========
    {
        cout<<T.data[q].i<<T.data[q].j<<T.data[q].e<<endl;
    }*/
    return 0;
}
搜索更多相关主题的帖子: 矩阵 
2008-03-11 00:19
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
搞定了。
//==================矩阵转置==========================
#include <iostream>
using namespace std;

const int MAXSIZE=12500;
const int MAXRC=100;
const int MAX=4;
//===================三元组===========================
typedef struct
{
    int i,j;
    int e;
}Triple;
//====================矩阵============================
typedef struct
{
    Triple data[MAXSIZE+1];
    int mu,nu,tu;
}TSMatrix;

//====================构造矩阵========================
void InitTSMatrix(TSMatrix & M)
{
    cout<<"Input mu nu tu"<<endl;//输入M
    cin>>M.mu>>M.nu>>M.tu;
    cout<<"INput value of i j e(M)"<<endl;
    //for(int m=0;m<MAX;m++)
    for(int m=1;m<=M.tu;m++)
    {
        cin>>M.data[m].i>>M.data[m].j>>M.data[m].e;
    }
}

//======================显示矩阵======================
void Display(const TSMatrix M)
{
    int i=1,j=1,dir=1;
    printf("The matrix is:\n");
//    int i=1,j=1,dir=1;

    for(i=1;i<=M.mu;i++)
    {
        for(j=1;j<=M.nu;j++)
        {
            if(M.data[dir].i==i && M.data[dir].j==j)
            {
                printf("%d  ",M.data[dir].e);
                dir++;
            }
            else
                printf("0  ");
        }
        printf("\n");
    }
}

//===================矩阵转置=========================
void TransposeSMatrix(TSMatrix M,TSMatrix & T)
{
    T.mu=M.nu;
    T.nu=M.mu;
    T.tu=M.tu;
    int q=1;
    if(T.tu)
    {
    //    int q=0;
        for(int col=1;col<=M.nu;col++)
        {
            for(int p=1;p<=M.tu;p++)
            {
                if(M.data[p].j==col)
                {
                    T.data[q].i=M.data[p].j;
                    T.data[q].j=M.data[p].i;
                    T.data[q].e=M.data[p].e;
                    ++q;
                }
            }
        }
    }
}
//====================================================
int main()
{
    TSMatrix M,T;
    InitTSMatrix(M);
    Display(M);
/*    cout<<"The m your input is:"<<endl;
    for(m=0;m<M.tu;m++)//===========输出M矩阵正确===============
    {
        cout<<M.data[m].i<<M.data[m].j<<M.data[m].e<<endl;
    }
    cout<<"================================="<<endl;*/
    TransposeSMatrix(M,T);
    Display(T);
/*    for(int q=0;q<T.tu;q++)//============error===========
    {
        cout<<T.data[q].i<<T.data[q].j<<T.data[q].e<<endl;
    }*/
    return 0;
}

上善若水,水善利万物而不争,处众人之所恶
2008-03-22 12:51
快速回复:矩阵转置实现的问题
数据加载中...
 
   



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

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