C++矩阵的加法转置
更新时间:2023-05-23 12:27:01 阅读量: 实用文档 文档下载
南昌航空大学实验报告
2011 年 11 月 26 日
课程名称:面向对象程序设计B 实验名称:动态链接库的制作与调用 班级: 10201407 姓名: 吴彤 同组人: 指导教师评定: 签名:
一、实验目的(所实现功能、验证性目的、创新性目的,参考实验要求)
综合运用所学面向对象编程知识完成动态链接库文件的创建、调用,理解动态链接库的工作原理,体会声明和定义分开方法在程序设计中的优势,掌握利用动态链接库实现不同开发平台间混合编程的方法,掌握利用动态链接库实现代码可复用技术,进一步掌握混合开发的方法。
二、概要设计(例如数据类型、函数的声明部分以及函数的调用关系)
综合应用所学面向对象编程知识定义一个多项式矩阵类并应用该类实现多项式矩阵类的运算。具体实现该矩阵的加法(采用运算符“+”重载)、转置(采用运算符“-”重载)及输出(采用运算符“<<”重载)操作。将该类制作为动态链接库,然后在其他工程中对该动态链接库进行调用。
通过对普通矩阵的相加和转置,把它推广到多项式矩阵。
程序源代码:
(Node.h)
#ifndef NODE_H
#define NODE_H
#ifdef DLL_FILE
class __declspec(dllexport) Node
#else
class __declspec(dllimport) Node
#endif
{
public:
int data; Node *next;
};
#endif
(Snode.h)
#include"Node.h"
#ifndef SNODE_H
#define SNODE_H
#ifdef DLL_FILE
class __declspec(dllexport) Snode
#else
class __declspec(dllimport) Snode
#endif
{
private:
Node* head;
public:
Snode();
Node* set();
};
#endif
(snode.cpp)
#ifndef DLL_FILE
#define DLL_FILE
#endif
#include"Snode.h"
#include<iostream.h>
Snode::Snode()
{
head=new Node;
head->next=NULL;
}
Node* Snode::set()
{
int e,k;
Node *r=head,*s=new Node;
cout<<"输入二项式的项数:";
cin>>k;
for(int i=0;i<k;i++)
{
r->next=s;
cout<<i+1<<"项";
cin>>e;
s->data=e;
r=s;
s=new Node;
}
r->next=NULL;
return head;
}
(Matrix.h)
#include"Node.h"
#include"Snode.h"
#include<iostream.h>
#ifndef MATRIX_H
#define MATRIX_H
#ifdef DLL_FILE
class __declspec(dllexport) Matrix
#else
class __declspec(dllimport) Matrix
#endif
{
private:
Node *m; int a,b;
public:
Matrix(int i,int j);
}; void set(Snode aa); Matrix operator+(Matrix &s); Matrix operator-(); friend __declspec(dllexport)ostream &operator<<(ostream& out,Matrix& s);
#endif
(Matrix.cpp)
#ifndef DLL_FILE
#define DLL_FILE
#endif
#include"Matrix.h"
Matrix::Matrix(int i,int j)
{
} a=i; b=j; m=new Node[a*b];
void Matrix::set(Snode aa)
{
for(int i=0;i<a;i++) for(int j=0;j<b;j++) m[i*b+j]=*aa.set();
}
Matrix Matrix::operator+(Matrix &s)
{
Matrix num(s.a,s.b); Node *r,*q; for(int i=0;i<a;i++) for(int j=0;j<b;j++)
} r=&m[i*b+j]; q=&s.m[i*b+j]; while(r->next&&q->next) { r=r->next; q=q->next; int a=r->data; r->data=q->data+r->data; q->data=a+q->data; } if(q->next) num.m[i*b+j]=s.m[i*b+j]; else num.m[i*b+j]=m[i*b+j];
return num;
}
Matrix Matrix::operator-()
{
Matrix n(b,a); for(int i=0;i<a;i++) for(int j=0;j<b;j++) n.m[i*b+j]=m[j*a+i]; return n;
}
__declspec(dllexport)ostream &operator<<(ostream& out,Matrix& s)
{
for(int i=0;i<s.a;i++) { for(int j=0;j<s.b;j++) { Node *r; r=&s.m[i*s.b+j]; int k=0; while(r->next) { } r=r->next; out<<r->data<<"*x"<<'^'<<k<<'+'; k++; out<<' '; } out<<endl;
} return out;
(调用链接库的函数)
#include"I:\logic\DLL\Matrix.h"
#include"I:\logic\DLL\Snode.h"
#include"I:\logic\DLL\Node.h"
#pragma comment(lib,"dll.lib");
void main()
{
Snode aa; Matrix bb(2,2),dd(2,2),cc(2,2); bb.set(aa); dd.set(aa); cc=bb+dd;
cout<<cc;
}
四、调试
在动态调用动态链接库时出现找不到.h文件和build时不产生.lib文件,经调试后可以产生动态链接库文件了。
五、测试结果(输入数据语输出数据以及与预期结果的差异及原因,可有截图)
多项式矩阵相加及输出:
多项式矩阵转置及输出
:
五、结论与分析
重点分析本次实验所遇到的问题以及解决方法,通过本次实验掌握的内容
在矩阵的转置中出现越界,通过本次实验我基本了解了动态链接库的创建,但是还有许多不懂,对矩阵的运算,及矩阵的转置。
正在阅读:
C++矩阵的加法转置05-23
绘本《我妈妈》教案09-25
中考政治真题精编及答案10-23
五年级数学下册培优辅差记录05-16
1河南省卫生行政处罚裁量标准05-11
第二炮兵工程大学考研试题845通信原理(2015年~2016年)08-07
基于单片机的数字电子秤设计09-15
盖洛普Q12之最详解06-10
高中语文《边城》教案及练习新人教版03-16
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- C++
- 加法
- 矩阵
- 可靠性测试作业办法
- 高中政治必修一三四单元知识点汇总
- 司法考试试题 法理学
- 生产总监岗位职务说明书
- 中国小型空压机行业发展研究报告
- 中餐西餐酒店菜谱食谱翻译英文英语
- ICT(信息通信技术)
- 浅谈中小企业如何进行合理避税
- 钢结构设计设计计算书
- 2009年6月20日大学英语四级(CET-4)真题试卷A卷
- 酒店员工管理制度
- 高中数学_数学归纳法应用举例教学设计学情分析教材分析课后反思
- 围绕美国宪法第一修正案的_衡量_之争
- 日本妇女社会地位的演变
- 如何辨别烟草的真假
- 世界知识产权组织的两个新条约与版权保护的新趋势
- shodex糖类色谱柱使用说明书
- 仙剑奇侠传3攻略
- 学位论文学术不端行为检测系统
- 人教版(新课程标准)一年级语文上册《明天要远足》同步练习B卷