三元组矩阵的基本操作——加、减、矩阵乘、转置

#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0

typedef int ElemType, Status;

#define MAXSIZE 256

typedef struct
{
   
	int i, j;    //数据所在的行、列值
	ElemType v;    //数据元素值
}Triple;

typedef struct
{
   
	Triple arr[MAXSIZE];    //非零元素的三元组
	int Rows, Cols, Nums;    //矩阵的行数、列数、非零元素个数
}SqSMatrix;

Status CtreateSMatrix(SqSMatrix& M)    //矩阵的创建
{
   
	printf("行数:");
	scanf_s("%d", &M.Rows);
	printf("列数:");
	scanf_s("%d", &M.Cols);
	printf("非零元个数:");
	scanf_s("%d", &M.Nums);
	printf("按行优先依次输入元素的行值、列值、数值:\n");
	int i = 0;
	while (i < M.Nums)
	{
   
		scanf_s("%d%d%d", &M.arr[i].i, &M.arr[i].j, &M.arr[i].v);
		i++;
	}
	return OK;
}

Status DestroySMatrix(SqSMatrix& M)    //矩阵的销毁
{
   
	M.Cols = 0;
	M.Nums = 0;
	M.Rows = 0;
	return OK;
}

Status PrintSMatrix(SqSMatrix M)    //矩阵的输出
{
   
	if (M.Rows == 0) return ERROR;
	int cnt = 0;
	for (int i = 0; i < M.Rows; i++)
	{
   
		for (int j = 0; j < M.Cols; j++)
		{
   
			if (cnt < M.Nums && M.arr[cnt].i == i && M.arr[cnt].j == j)
			{
   
				printf("%d  ", M.arr[cnt].v);
				cnt++;
			}
			printf("0  ");
		}
		printf("\n");
	}
	return OK;
}

Status CopySMatrix(SqSMatrix M, SqSMatrix &T)    //矩阵的拷贝
{
### C++ 中矩阵操作的实现 在 C++ 编程语言中,可以通过多种方式来表示和处理矩阵。通常情况下,二维数组是最常见的方法之一用于存储矩阵数据结构[^1]。下面展示了一个简单的例子,说明如何读取输入并完成矩阵转置操作。 #### 矩阵转置函数示例 以下是基于给定描述的一个简单程序,该程序可以接收一组测试数据,并计算每个 n×n 阶矩阵转置: ```cpp #include <iostream> #include <vector> using namespace std; // 定义一个函数用来打印矩阵 void printMatrix(const vector<vector<int>>& matrix, int size) { for (int i = 0; i < size; ++i) { for (int j = 0; j < size; ++j) { cout << matrix[i][j] << ' '; } cout << endl; } } // 转置矩阵的功能 vector<vector<int>> transposeMatrix(vector<vector<int>>& matrix, int size) { vector<vector<int>> transposed(size, vector<int>(size)); for(int i=0;i<size;++i){ for(int j=0;j<size;++j){ transposed[j][i]=matrix[i][j]; } } return transposed; } int main(){ int testCases; cin >> testCases; while(testCases--){ int n; cin >> n; vector<vector<int>> original(n, vector<int>(n)); for(int i=0;i<n;++i){ for(int j=0;j<n;++j){ cin >> original[i][j]; } } // 计算转置后的矩阵 auto result = transposeMatrix(original,n); // 打印原始矩阵及其转置结果 printMatrix(result,n); } return 0; } ``` 上述代码展示了如何通过标准输入流 `cin` 接收多组测试数据,并针对每一组执行矩阵转置运算。此过程包括定义辅助功能(如打印矩阵),以及核心逻辑——即实际进行矩阵转置的部分。 #### 关于头歌平台上的相关内容或教程 对于希望学习更多有关 C++ 和其他编程技术的学习者来说,“头歌” 是一个非常有用的在线实践教学平台。它提供了丰富的实验项目、课程资源等支持学生动手能力培养的内容。如果想深入探索像本题这样涉及具体算法或者数据结构的应用实例,在其平台上搜索关键词 “C++ 矩阵”,应该能找到不少有价值的资料供进一步研究。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值