矩阵转置实验报告.docx
《矩阵转置实验报告.docx》由会员分享,可在线阅读,更多相关《矩阵转置实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
矩阵转置实验报告
矩阵转置实验报告
篇一:
矩阵运算实验报告
实验报告
--矩阵运算
一.实验目的。
1.通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。
2.通过实践进一步领会程序设计的特点和应用,提高运用C++语言以及面向对象知识解决实际问题的能力。
3.通过实践掌握用C++语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;
4.学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力。
为后续的相关课程的学习打下基础。
二.实验要求。
1.学会建立模板类;
2.实现矩阵的“加”、“减”、“乘”、“数乘”、“转置”;
3.动态内存分配并用随机数填充;
4.注意“加”、“减”、“乘”要进行条件的判断;
三.设计思路。
算法基本流程
1)
2)
3)
4)
5)
6)获取用户输入的矩阵1的行数和列数,动态生成一个一维数组利用随机数生成数组成员,并利用两个循环输出数组,使其符合矩阵的格式矩阵2同矩阵1的处理方法通过两个矩阵的行数和列数比较来判断能否进行加减乘等运算,如不能,输出相关信息如能够进行计算,则利用数组进行相应运算,并按照正确格式输出通过改变一维数组中元素的顺序来实现转置并输出
算法流程图
四.基本界面。
五.关键代码。
关键类的声明
classCMatrixclass
{
public:
CMatrixclass
{
intm_Row=0;//行
intm_Col=0;//列
m_pElements=NULL;//一维数组
};
virtual~CMatrixclass
{
deletem_pElements;
}
public:
intm_Row;
intm_Col;
int*m_pElements;
};
关键函数代码
voidCMyView:
:
OnCHECKadd
{
m_;
m_;
m_;
}
voidCMyView:
:
OnCHECKsubtrict
{
m_;
m_;
m_;
}
voidCMyView:
:
OnCHECKcombine
{
m_;
m_;
m_;
}
voidCMyView:
:
OnCHECKnums
{
m_;
m_;
m_;
}
voidCMyView:
:
OnBUTTONcompute
{
UpdateData;
//TODO:
Addyourcontrolnotificationhandlercodehereif==1)
{
if
{
m_result=“行数列数不等无法相加!
”;
}
else
{
matrixc;
c=*op1+*op2;
m_result=“matrix1+matrix2”;
m_result+=“\r\n”;
m_result+=_show;
}
}
elseif==1)
{
if
{
m_result=“行数列数不等无法相减!
”;
}
else
{
matrixc;
c=*op1-*op2;
m_result=“matrix1-matrix2”;
m_result+=“\r\n”;
m_result+=_show;
}
}
elseif==1)
{
if
{
m_result=“以上无法相乘!
”;
}
else
{
matrixc;
c=*;
m_result=“matrix1*matrix2”;
m_result+=“\r\n”;
m_result+=_show;
}
篇二:
稀疏矩阵三元组实现矩阵转置算法实验报告
实验三稀疏矩阵的三元组表示实现矩阵转置算法
学院专业班
学号姓名一.实习目的
1.掌握稀疏矩阵的三元组顺序表存储表示;
2.掌握稀疏矩阵三元组表示的传统转置算法的实现;
3.掌握稀疏矩阵三元组表示的快速转置算法的实现;
二.实习内容
1.稀疏矩阵的按三元组形式输入,即按行序输入非零元的行号、列号、值,实现传统转置
算法,输出按通常的阵列形式输出。
2.稀疏矩阵的按三元组形式输入,即按行序输入非零元的行号、列号、值,实现快速转置
算法,输出按通常的阵列形式输出。
三.实验步骤
1.三元组的定义
#defineMAX_SIZE100//非零元个数的最大值
structTriple
{
inti,j;//行下标,列下标
ElemTypee;//非零元素值
};
structTSMatrix
{
structTripledata[MAX_SIZE+1];//非零元三元组表,data[0]未用
intmu,nu,tu;//矩阵的行数、列数和非零元个数
};
2.创建稀疏矩阵M(按三元组形式输入,即按行序输入非零元的行号、列号、值)
3.编写三元组传统转置函数。
4.编写三元组快速转置函数。
4..主函数
程序代码
#include““
#include““
#defineMAX_SIZE100//非零元个数的最大值
typedefintElemType;
structTriple
{
inti,j;//行下标,列下标
ElemTypee;//非零元素值
};
structTSMatrix
structTripledata[MAX_SIZE+1];//非零元三元组表,data[0]未用intmu,nu,tu;//矩阵的行数、列数和非零元个数
};
intCreateSMatrix
{//创建稀疏矩阵M
inti,m,n;
ElemTypee;
intk;
printf;
scanf;
if
return-1;
[0].i=0;//为以下比较顺序做准备
for
{
do
{
printf,列,元素值:
”,i,,);
scanf;//输入非零元的行号、列号、元素值k=0;
if//行或列超出范围
k=1;
if//行或列的顺序有错
k=1;
}while;
[i].i=m;//将m,n,e填入M
[i].j=n;
[i].e=e;
}
return1;
}
voidPrintSMatrix
{//按矩阵形式输出M
inti,j,k=1;
Triple*p=;
p++;//p指向第1个非零元素
for
for
if
//p指向非零元,且p所指元素为当前处理元素
{
printf;//输出p所指元素的值
p++;//p指向下一个元素
k++;//计数器+1
}
else//p所指元素不是当前处理元素
printf;//输出0
printf;
}
}
voidTransposeSMatrix
{//求稀疏矩阵M的转置矩阵T。
intp,q,col;
=;
=;
=;
if
{
q=1;
for
for
if
{
[q].i=[p].j;
[q].j=[p].i;
[q].e=[p].e;
++q;
}
}
}
voidFastTransposeSMatrix
{//快速求稀疏矩阵M的转置矩阵T。
算法改
intp,q,t,k,col,*num,*cpot;
num=malloc*sizeof);//存M每列非零元素个数cpot=malloc*sizeof);//存T每行的下1个非零元素的存储位置
=;//给T的行、列数与非零元素个数赋值
=;
=;
if//是非零矩阵
{
for
num[col]=0;//计数器初值设为0
for//求M中每一列含非零元素个数
{k=[t].j;++num[col];}
cpot[1]=1;//T的第1行的第1个非零元在中的序号为1
for
cpot[col]=cpot[col-1]+num[col-1];
//求T的第col行的第1个非零元在中的序号
printf;
for
printf;
printf;
printf;
for
printf;
printf;
for//从M的第1个元素开始
{
col=[p].j;//求得在M中的列数
q=cpot[[p].j];//q指示M当前的元素在T中的序号[q].i=[p].j;
[q].j=[p].i;
[q].e=[p].e;
++cpot[col];//T第col行的下1个非零元在中的序号
}
}
printf;
for
printf;
printf;
free;
free;
}
voidmain
{
TSMatrixA,T;
printf;
CreateSMatrix;
PrintSMatrix;
TransposeSMatrix;
printf:
\n”);PrintSMatrix;
FastTransposeSMatrix;
printf:
\n”);PrintSMatrix;
}
(2)调试程序
运行程序(截图)
四.实习小结
自己写
篇三:
矩阵转置实验
实习一熟悉使用计算机系统
一、实习内容
选择一个计算机系统,熟悉该系统的操作命令,且掌握该计算机系统的使用方法。
二、实习目的
配合操作系统课程的学习,模拟实现操作系统的功能,有助于对操作系统的理解。
操作系统功能的模拟实现可以在计算机系统的终端上进行,也可以在一台微型计算机上进行。
根据您的学习条件,选择一个计算机系统,熟悉对该系统的使用,那么您可以顺利地完成本课程的实习。
为了尽快地熟悉计算机系统,可编辑一个源程序,且对编辑好的源程序编译、运行、显示/打印运行结果等。
三、实习题目
编制一个程序,求10?
10矩阵A的转置矩阵AT,即
要求确定两组初值,运行设计的程序,显示或打印每一组的A和AT。
四、实习报告
实习题目。
程序中使用的数据结构及符号说明。
流程图。
打印一份源程序并附上注释。
打印两组A和AT的值。