对称矩阵算法2
来源:互联网 发布:若星汉天空 知乎 编辑:程序博客网 时间:2024/06/06 23:18
#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip>
using namespace std;
///两个对称矩阵的加减乘除
void InIt(int **A,int n)///对一维矩阵(上三角或者是下三角)进行初始化
{
(*A)=(int*)malloc(sizeof(int)*(n*(n+1)/2));
}
void INIT(int ***C,int n)///初始化,两个***表示二维数组
{
*C=new int*[n]; ///初始一个m行n列的矩
for (int i=0;i<n;i++)
{
(*C)[i]=new int[n];
}
}
int ReturnElem(int A[],int i,int j)///返回A[M]z中的元素给对应B[i][j]中的值(这里最主要是下三角)
{
if(i>=j)
return A[(i*(i+1)/2+j)] ;
else
return A[(j*(j+1)/2+i)] ;
}
void AssignElem(int A[],int e,int i,int j)///返回A[M]z中的元素给对应B[i][j]中的值(这里最主要是下三角)
{
if(i>=j)
A[(i*(i+1)/2+j)]=e ;
else
A[(j*(j+1)/2+i)]=e;
}
void OutPut(int A[],int n)///通过输入压缩的下三角矩阵输出全部元素
{
for(int i=0;i<n;i++)///作为行
{
for(int j=0;j<n;j++)
cout<<setw(4)<<ReturnElem(A,i,j);
cout<<endl<<endl;
}
}
void ADDcolumn(int A[],int B[],int **C,int n)///计算两个对称矩阵的和
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
C[i][j]=ReturnElem(A,i,j)+ReturnElem(B,i,j);
}
void Multiply(int A[],int B[],int **C,int n)///两个矩阵的相乘
{
int sum;
for(int i=0;i<n;i++)///行
{
for(int j=0;j<n;j++)///列
{
sum=0;
for(int k=0;k<n;k++)///个数
{
sum+=ReturnElem(A,i,k)*ReturnElem(B,k,i);
}
C[i][j]=sum;
}
}
}
void OUTPUT(int A[],int n)///通过输入压缩的下三角矩阵输出全部元素
{
for(int i=0;i<n;i++)///作为行
{
for(int j=0;j<n;j++)
cout<<setw(4)<<ReturnElem(A,i,j);
cout<<endl;
}
}
void OUTput(int **C,int n)///通过输入压缩的下三角矩阵输出全部元素
{
for(int i=0;i<n;i++)///作为行
{
for(int j=0;j<n;j++)
cout<<setw(4)<<C[i][j];
cout<<endl;
}
}
void INput(int A[],int n,int e)///输入一个下三角
{
for(int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"行的"<<i+1<<"个元素";
for(int j=0;j<=i;j++)
{
cin>>e;
AssignElem(A,e,i,j);
}
cout<<endl;
}
}
int main()
{
int e,*A,*B,**C,n=5;
InIt(&A,n);
InIt(&B,n);
INIT(&C,n);
cout<<"输入矩阵A的下三角"<<endl;
INput(A,n,e);
cout<<"输出对称矩阵A"<<endl;
OUTPUT(A,n);
cout<<endl<<endl<<"输入矩阵A的下三角"<<endl;
INput(B,n,e);
cout<<endl<<"输出对称矩阵B"<<endl;
OUTPUT(B,n);
ADDcolumn(A,B,C,n);
cout<<endl<<endl<<"输出两个对称矩阵A和对称矩阵B相加之后为矩阵C(C=A+B):"<<endl;
OUTput(C,n);
Multiply(A,B,C,n);
cout<<endl<<endl<<"输出两个对称矩阵A和对称矩阵B相乘之后为矩阵C(C=A*B):"<<endl;
OUTput(C,n);
return 0;
}
输出的结果
- 对称矩阵算法2
- 对称矩阵&稀疏矩阵的两种转置算法
- 对称矩阵的压缩存储算法
- (十四)矩阵类与对称矩阵的压缩算法
- 对称矩阵
- 对称矩阵
- 对称矩阵
- 对称矩阵、稀疏矩阵
- 实对称矩阵特征值求解算法:Jacobi行循环法
- 对称矩阵的存储及转置算法
- 对称矩阵与压缩存储算法(java实现)
- 第九周 项目2 压缩矩阵与对称矩阵
- 数据结构与算法(Java描述)-14、矩阵类以及对称矩阵的压缩算法
- 对称算法
- 【数据结构】稀疏矩阵,对称矩阵
- 特殊矩阵之对称矩阵
- 对称矩阵行列转换
- 对称矩阵压缩存储
- linux用户管理及用户权力下放
- RHEL7
- 这些网站可以提高工作效率
- SVM算法原理分析
- NOI2017 day2T2 vegetables 题解(伪)
- 对称矩阵算法2
- Tachyon:Spark生态系统中的分布式内存文件系统
- 算法笔记:数学问题+数论初步一(未完待续)
- 【R笔记】基于R构建tensorflow框架实现神经网络
- C语言-类型转换
- 4G 频段的分配
- Django学习流程精简记录
- 《致橡树》 舒婷
- 快速幂讲解