⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zz.txt

📁 本程序是关于求解矩阵的转置矩阵的主程序,运行环境是vc6.0
💻 TXT
字号:
#include <iostream>
#include <process.h>
using namespace std;
#define MAXSIZE 12500
#define OK 1
typedef int Status;
typedef struct {
    int i,j;//非零元的行下标和列下标
    int e;//值
}Triple;
typedef struct {
    Triple data[MAXSIZE+1];//存储三元组表,不用data[0];
    int mu,nu,tu;//距阵的行数、列数和非零元个数
}TSMatrix;
static int count=1;//用来计算非零元素个数
Status TransposeSMatrix(TSMatrix M,TSMatrix &T){
//采用三元组顺序表存储表,求距阵M的转置距阵T
    int col;
    int num[100];
    int cpot[100];
    int q;
    T.mu=M.nu;
    T.nu=M.mu;
    T.tu=M.tu;
    if(T.tu){
        for(col=1;col<=M.nu;++col) 
            num[col]=0;
        for(int t=1;t<=M.tu;++t)
            ++num[M.data[t].j];//求M中每一列含非零元个数
        cpot[1]=1;
        //求第col列中第一个非零元在b.data中的序号
        for(col=2;col<=M.nu;++col) cpot[col]=cpot[col-1]+num[col-1];
        for(int p=1;p<=M.tu;++p){
            col=M.data[p].j;
            q=cpot[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;
            ++cpot[col];
        }//for
    }//if
    return OK;
}
void send(TSMatrix &M,int flag1,int flag2,int a){//将按行输入的矩阵数据,将已经选择的非零数据保存在三元数组中
    M.data[count].i=flag1;
    M.data[count].j=flag2;
    M.data[count].e=a;
    count++;
}
void main(){
    int k,i,j;
    int n,m;//行数,列数
    int a[100][100];
    TSMatrix M;
    TSMatrix T;
    cout<<"请输入矩阵的行数:";
    cin>>n;
    M.mu=n;
    cout<<"请输入矩阵的列数:";
    cin>>m;
    M.nu=m;
    cout<<"请用户依次输入矩阵的"<<n*m<<"个元素:"<<endl;
    for(i=1;i<=n;i++){//输出矩阵的图
            for(j=1;j<=m;j++){            
            cin>>a[i][j];                        
            cout<<a[i][j]<<"  ";
            if(a[i][j]!=0)//选择非零元素
            send(M,i,j,a[i][j]);//将非零元素传到三元组
            if(i==n&&j==m){
                cout<<"输入完毕"<<endl;
                break;
            }
        }
        cout<<"\n";
    }
    M.tu=count-1;
    TransposeSMatrix(M,T);
    for(i=1;i<=m;i++){//将二维数组清空,为输出转置矩阵做准备
            for(j=1;j<=n;j++){    
                a[i][j]=0;
            }
    }
    for(k=1;k<=M.tu;k++){//将三元数组的内容传到二维数组
    i=T.data[k].i;
    j=T.data[k].j;
    a[i][j]=T.data[k].e;
    }//for
    cout<<"\n";
    cout<<"转置矩阵:"<<endl;
    for(i=1;i<=m;i++){//打印出转置矩阵
            for(j=1;j<=n;j++){    
                cout<<a[i][j]<<"  ";
            }
            cout<<"\n";
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -