| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1758 人关注过本帖
标题:实现稀疏矩阵的三元组表示以及转置算法问题
取消只看楼主 加入收藏
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
结帖率:100%
收藏
 问题点数:0 回复次数:0 
实现稀疏矩阵的三元组表示以及转置算法问题
结果输不出请指教
程序代码:
//主函数
#include<iostream>
#include"men.h"
#include"triple.h"
#define elemtype int
using namespace std;
typedef int status;
int main()
{
    char y,a,b,c;
    void men();
    tsmatrix M,T;
        menu();
        cin>>y;
        switch(y)
        {
        case 'a':
      M=creatematrix();
            cout<<"完成创建操作"<<endl;
  break;
        case 'b':
            T=transposesmtrix(M,T);
            cout<<"完成矩阵转置操作"<<endl;
  break;
        case 'c':    
            print(T);
            cout<<"完成操作"<<endl;
            break;
        }
    return 0;
}

程序代码:
//头文件
#include<iostream>
using namespace std;
void menu()
{    
    cout<<"  *****************************************************************\n";
    cout<<"  ******************                             ******************\n";
    cout<<"  *             a:创建矩阵             b:转置                     *\n";
    cout<<"  *             c:打印矩阵             d:                         *\n";
    cout<<"  *             e:               f:                               *\n";
    cout<<"  *             g:             h:退出                             *\n";
    cout<<"  ******************                             ******************\n";
    cout<<"  *****************************************************************\n";
    cout<<" 请输入命令:";
}

程序代码:
//头文件
#include<stdio.h>
#define elemtype int
using namespace std;
typedef int status;
#define MAXSIZE 12500  //假设非零元个数的最大值 
typedef struct
{ 
     int i,j;    //该非零元的行列下标 
     elemtype e; 
}Triple; 
typedef  struct { 

 Triple  data[MAXSIZE]; 

 int       mu, nu, tu;  //矩阵的行、列数和非零元个数 
}tsmatrix;
tsmatrix M,T;
//创建矩阵
tsmatrix creatematrix()
{
tsmatrix M;
int n;
printf("输入矩阵的行数,列数,个数:\n");
scanf("%d%d%d",&M.mu,&M.nu,&M.tu);
printf("输入非零元的值(行数、列数和值):\n");
for(n=0;n<M.tu;n++)
scanf("%d%d%d",&M.data[n].i,&M.data[n].j,&M.data[n].e);
return M;
}
//打印矩阵
void print(tsmatrix &M)
{
    int x,y,n,k;

    for(x=0;x<M.mu;x++)
    {
    for(y=0;y<M.nu;y++)
    {
    k=0;
    for(n=0;n<M.tu;n++)
    if((M.data[n].i==x)&&(M.data[n].j==y))
    {
    printf("%3d",M.data[n].e);
    k=1;
    }
    if(k==0)
    printf("%3d",k);
    }
    printf("\n");
    }
}
//转置矩阵
tsmatrix transposesmtrix(tsmatrix M,tsmatrix &T)
{
    int q,col,p;

    T.mu=M.nu; T.nu=M.mu; T.tu=M.tu;
    if(T.tu)
    {
    q=0;
    for(col=0;col<M.nu;col++)
    for(p=0;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;
    }
    }
    return T;
}

搜索更多相关主题的帖子: 矩阵 转置 int cout data 
2018-11-11 21:23
快速回复:实现稀疏矩阵的三元组表示以及转置算法问题
数据加载中...
 
   



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

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