首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构第四次实验 矩阵快速转置与矩阵加法

数据结构第四次实验 矩阵快速转置与矩阵加法

作者头像
用户2965768
发布2018-12-24 12:08:27
4640
发布2018-12-24 12:08:27
举报
文章被收录于专栏:wymwym
#include <bits/stdc++.h>
using namespace std; 

struct xyz {
	int i,j;
	int v;
}Triple;

 struct xsjz{ // 存储系数矩阵 
 	xyz data[100];
 	int mu,nu,tu;
 }TsMatrix;
 
int oder[10][3] = {{1,2,12},{1,3,9},{3,1,-3},{3,6,14},{4,3,24},{5,2,18},{6,1,15},{6,4,-7},{7,2,8}}; // 原始数据 
 
xsjz M,T;
 
void fastzz() // 快速转置 
{
	printf("------------------------------\n");
	printf("转置\n");
	int i,p,col,pos,cpot[10];
	int num[10];
	T.mu = M.mu; //行 
 	T.nu = M.nu; // 列 
 	T.tu = M.tu; // 数
 	for(i=1;i<=M.nu ; i++) num[i] = 0;
 	
 	for(p=1;p<=M.tu ; p++)
		num[M.data[p].j]++;//m每一列非零元的个数 
			
 	cpot[1]=1;
 	
 	
	for(col = 2; col <= M.nu ; col++)
		cpot[col] = cpot[col-1] + num[col-1];//col列第一个非零元的编号 
		
	for(p = 1; p <= M.tu ; p++)
	{
		col = M.data[p].j;
		pos = cpot[col];
		T.data[pos].i =  M.data[p].j;
 		T.data[pos].j =  M.data[p].i;
 		T.data[pos].v =  M.data[p].v;
 		++cpot[col]; //该列下一个元素 
	} 
	
} 
int mp[100][100],a[100][100],b[100][100]; 
void qiuhe()
{
	printf("------------------------------\n");
	printf("求和\n");
	for(int i=1;i<=M.tu;i++)
	{
		a[M.data[i].i][M.data[i].j] = M.data[i].v;
		b[T.data[i].i][T.data[i].j] = T.data[i].v;
	}
	printf("A\n");
	for(int i=1;i<=M.nu;i++)
		for(int j=1;j<=M.mu;j++)
			{
			printf("%5d",a[i][j]);
			if(j==M.mu)printf("\n");
			}
	printf("B\n");
	for(int i=1;i<=M.nu;i++)
		for(int j=1;j<=M.mu;j++)
			{
			printf("%5d",b[i][j]);
			if(j==M.mu)printf("\n");
			}
		printf("C\n");
	for(int i=1;i<=M.nu;i++)
		for(int j=1;j<=M.mu;j++)
			{
			mp[i][j]=a[i][j]+b[i][j];
			printf("%5d",mp[i][j]);
			if(j==M.mu)printf("\n");
			}
} 
 int main()
 {
 	int i,j,k;
 	
 	M.mu = 7; //行 
 	M.nu = 7; // 列 
 	M.tu = 9; // 数
	for( i = 0; i < M.tu; i++)
	{
		M.data[i+1].i = oder[i][0];
		M.data[i+1].j = oder[i][1];
		M.data[i+1].v = oder[i][2];
	} 

	
	for(i=1;i<=M.tu ;i++)
	{
		printf("%d %d %d\n",M.data[i].i ,M.data[i].j,M.data[i].v );
	}
	fastzz();
	for(i=1;i<=T.tu ;i++)
	{
		printf("%d %d %d\n",T.data[i].i ,T.data[i].j,T.data[i].v );
	}
	qiuhe();
 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档