下载的文档为原格式,如果无法下载或内容有问题,请联系客服QQ:1920494503

矩阵数乘.doc

课题名称:矩阵数乘指导老师:

院系:

姓名:

班级:

学号:

一、程序功能简介

第1页

该程序定义了一个向量类,里面的元素是模版形式,定义了有关向量类的各种属性、方法及运算符重载函数。根据向量处理的程序实现矩阵数乘。

二、课程设计要求

(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*);

第2页

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;

第3页

}

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;

();

}

数乘运算实现:

第4页

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);

第5页
相关文档
本站文档均来自互联网及网友上传分享,本站只负责收集和整理,有侵权可通过QQ客服反馈删除。侵权投诉