下载的文档为原格式,如果无法下载或内容有问题,请联系客服QQ:1920494503![]()
课题名称:矩阵数乘指导老师:
院系:
姓名:
班级:
学号:
一、程序功能简介
该程序定义了一个向量类,里面的元素是模版形式,定义了有关向量类的各种属性、方法及运算符重载函数。根据向量处理的程序实现矩阵数乘。
二、课程设计要求
(1)利用已知的向量类对象定义一个矩阵类,矩阵类的数据是向量
子对象,同样定义矩阵类的各种属性,方法及运算符重载函数。
(2)完善成员函数,使矩阵可以由文件输入,具体的输入格式自己
规定。
(3)完成矩阵的数乘,加减,赋值等运算,要求用整型矩阵和浮点
型分别演算。
(4)更改main函数,可由用户选择输入矩阵数据的方法,程序可
以连续运行,直到选择退出为止。
三、新增功能实现
1、矩阵类的定义与实现:
class Matrix //定义矩阵类
{
int Row,Line;
Node *Head,*Rear;//*CurrentNode;
public:
Matrix(); //默认的构造函数
Matrix(int,int); //带行列数的构造函数
~Matrix(); //析构函数
void SetDate(); //输入矩阵元素的函数
void Insert(Node*);
void ReadFromFile(char t[]); //从文件中读入矩阵
int GetRow(){return Row;} //返回矩阵的行数
int GetLine(){return Line;} //返回矩阵的列数
void SetCMatrix(int row,int line){Row=row; Line=line;}
Node*GetHead(){return Head;} //返回链表头指针的函数
double&GetElement(int IndexRow,int IndexLine); //从链表中得到某行某列的元素void DestroyAll();
void Print(); //输出矩阵
};
2、加法运算实现:
void Add(Matrix&m1,Matrix&m2)
{
if()!=()&&()!=())
{
cout<<"错误!!!第一个矩阵的行数与列数必须与第二个矩阵的行数与列数相等!"<<endl;
exit(1);
}
int i,j;
Matrix Result(),());
Node*CurrentNode=();
for(i=1;i<=();i++)
for(j=1;j<=();j++)
{
CurrentNode->Date+=(i,j))+(i,j));
CurrentNode=CurrentNode->Next;
}
cout<<"两个矩阵的和是:"<<endl;
();
}
减法运算实现:
void Reduce(Matrix&m1,Matrix&m2)
{
if()!=()&&()!=())
{
cout<<"错误!!!第一个矩阵的行数与列数必须与第二个矩阵的行数与列数相等!"<<endl;
exit(1);
}
int i,j;
Matrix Result(),());
Node*CurrentNode=();
for(i=1;i<=();i++)
for(j=1;j<=();j++)
{
CurrentNode->Date+=(i,j))-(i,j));
CurrentNode=CurrentNode->Next;
}
cout<<"两个矩阵的差是:"<<endl;
();
}
数乘运算实现:
void Time1(Matrix&m1,double shu)
{
int i,j;
Matrix Result(),());
Node*CurrentNode=();
for(i=1;i<=();i++)
{
for(j=1;j<=();j++)
{
if(CurrentNode==0) break;
CurrentNode->Date+=((i,j))*shu);
CurrentNode=CurrentNode->Next;
}
}
cout<<"得到的";
();
}
3、由文件读入矩阵的实现:
void Matrix::ReadFromFile(char filename[]) {
Node*CurrentNode=Head;
int i,j;
double temp;
ifstream ins;
(filename,ios::in|ios::nocreate);
本站文档均来自互联网及网友上传分享,本站只负责收集和整理,有侵权可通过QQ客服反馈删除。侵权投诉