还剩6页未读,继续阅读
文本内容:
实验报告-基础实验C++班级_201OXXX_学号_201OXXXX_姓名_HoogLe_专业XXXX1实验目的2掌握类与对象的基本知识点3掌握引用、指针的应用4掌握函数模板、类模板的应用5利用time函数实现算法评价的事后统计方法6熟悉抽象数据类型的表示和实现方法实验内容
1、利用函数模板,实现输入三个数可以是三个整形或浮点数等,并按由大到小的进行排序后输出#include iostream_using namespace std—;_templ atetypename Type—swap1_Type_*p1,_Type_*p2_Type_p;p=*pl;*p]=*p2;*p2二p;void main{_int_nl,n2,n3;coutvv”请输入三个整数:\n;cin»n1»n2»n3;if nln2—swap lnl,n2;if nln3—swap ln1,n3;if n2n3—swapln2,n3;cout”排序后为H«n1ends«n2ends«n3«endl;_float_el,e2,e3;cout”请输入三个浮点数:\n;cin»e1»e2»e3;_ife le2swap le1,e2;_ife le3swap le1,e3;_ife2e3swap Ie2,e3_______;cout排序后为:n«e1ends«e2«ends«e3«endl;请粘贴出运行测试结果后为个e54s整t请S a3o3输n y数C7入三5313?浮6!456-盘3点・|4排后为
5.・排.仝3入635三.k43外用序e4数
36.4F9Jnl|
2、实现利用选择排序对存储10个数值的动态数组进行排序的通用模板#include iostreamusingnamespacestd;_templatetypename Type_void sort_Type_*a,int n/*选择法排序,从小到大*/{int i,j;_Type_p;for i=0;ivn;i++for j=i+l;jv_n—;j++ifa[i]aUD p=*a+i;〃*a+i等价于a[i];a[i]=a[j];_*a+j—=p;试分析sort的时间复杂度:O;void main{int n;//数组大小变量cout”请输入动态数组的大小”;_cin»n_;_int*p=new int[n];〃申请动态数组存储空间cout«H\n请输入数组中的”nv个数据:\n;forinti=0;in;i++_cin»p[i];〃从键盘读入数据_sortp,n;//对数组中的数据进行排序coutv排序后数组中的数据:\n;forint j=O;j vn;j++—cout«p[j];〃输出数组中的数据cout«endl;—delete[]p;〃释放所申请的存储空间粘贴测试数据及运行结果3,算法事后统计分析方法,利用函数库time中clock_t类进行测试实例统计5,000,000,00次空的for循环的时间,单位是秒这个头部定义了与时间有关的三种类型Clock」,time」,tm,利用此方法,可对同一问题的不同算法加以性能测试#include iostream#include time.husing namespacestd;void main{volatile longunsigned t;//volatile可变的〃方法一time_t start;start=timeNULL;〃设置起始时间fort=0;t500000000;t++;cout«nloop used«difftimetimeNULL,start«n seconds.\nn;〃方法二clock_t ti=clock;〃取当前时钟时间fort=0;t500000000;t++;cout«Hloop used-vvclock-ti/CLK_TCK*
1.0vv”seconds.\n”;〃精度更高粘贴测试结果:
4.[问题描述]:设计一个复数类,其抽象数据类型描述如下[复数抽象数据类型描述]:ADT complexis Date实部虚部OperationComplex构造函数输入塞初始化实部的值realval与虚部的值irngvaL动作确定实部与虚部GetReal获得实部输入无前置条件无动作获得复数的实部输出返回该复数的实部后置条件无Getlmag获得虚部输入无前置冬件.干动作、获得复数的虚部输出返回该复数的虚部后置条件无Operate+重载加法运算符,实现两个复数相加输入另一个所要相加复数对象前置条件无动作将两个复数的实部与虚部分别相加输出返回相加后的复数对象后置条件无Operate-重载减法运算符,实现两个复数相减输入要减的复数对象前置条件无动作、将两个复数的实部与虚部分别相减输出返回相减后的复数对象后置条件无Display输出复数输入无前置条件无动作、将复数的实部和虚部按一定格式输出输出无后置条件无end ADTcomplex[利用类模板加以实现,使实部、虚部可以为int或float或double]头文件complex.h实现类声明代码如下#includeiostream.htemplateclass Tclasscomplexprivate:T realval,imgval;public:complex{realval=imgval=O;};complexTT real=0,T img=0{realval=real;imgval=img;〜complex{};T GetReal;T GetlmagO;complexT operator+complexT c;complexT operator-complexT c;friend ostreamoperator«ostream out,complexT d;friend istreamoperator»istream in,complexT d;void displayO;;在complex..cpp文件中实现complex类中成员函数,实现代码如下:templateclass TTcomplexT::GetReal{return realval;templateclass TTcomplexT::GetImag{return imgval;templateclass TcomplexT complexT::operator+complexT c{real val+=c.real val;imgval+=c.imgval;return*this;templateclass TcomplexTcomplexT::operator-complexTc{real val-=c.real val;imgval-c.imgval;return*this;templateclass Tostreamoperator«ostreamout,complexT d{ifd.realval!=0d.img val!=0{out«d.realval«,,+n«d.imgval«,,in;return out;else ifd.realval!=0d.imgval==0{out«d.realval;return out;else ifd.realval==Od.imgval!=0{out«d.imgval«nin;return out;else{out«0;return out;templateclass Tistreamoperator»istreamin,complexT d{in»d.real»d.imag;return in;templateclass TvoidcomplexT::display{ifreal val!=0imgval!=0{cout«realval«,+n«imgval«,,in;else ifrealval!=0imgval==0{cout«realval;else ifrealval==0imgval!=0{cout«imgval«uiH;else{cout«0;主程序代码如下#includeiostream.h#includeHcomplex.hHvoid main{complexint coml10,0,coml20,0;complexint com2l4,0,com220,3;complexdouble com313,
1.5,com328,-
1.5;complexdouble com41-4,
3.4,com42-6,-
8.1;complexdouble com51-
5.4,
1.2,com
525.4,
3.2;coutv v”输入测试H«endl;comll.display;cout«n n;coml
2.display;cout«endl;com
21.display;cout«n H;com
22.display;cout«endl;com
31.display;cout«H n;com
32.display;cout«endl;com
41.display;cout«n;com
42.display;cout«endl;com
51.display;cout«n;com
52.display;cout«endl;cout”测试加法、减法vvendl;cout«nn«com31vv+”《com32v=;cout«com31+com32«endl;cout«nn«com41«,-,,«com42«n=n;cout«com4l-com42«endl;coutv”测试提取实部虚部”《endl;cout«com51«:H«com5l.GetReal«H-------------n«com
51.Getlmag«endl;cout«com52«n:n«com
52.GetReal«n---------------H«com
52.GetImag«endl;cout«”通过提取实部虚部求Z1的共胡复数”《endl;complexint z1com11,Getlmag,com
11.GetReal;cout«zl«endl;[测试数据]1Zl=0,Z2=0;2Zl=4,Z2=3i;3Z1=3+L5i,Z2=8-L5i;4Zl=-4+
3.4i,Z2=-6-
8.1i;5Zl=-
5.4+
1.2i,Z2=
5.4+
3.2i;6Z1的共朝复数:[粘贴测试结果]D:\Program Files\Microsoft VisualStudio\MyPrqjects\HoogLe\Debug\l.exe输入测试0043i3+
1.5i8+-
1.5i-4+
3.4i—6+—
8.1i-
5.4+
1.2i
5.4+
3.2i测试加法、减法3+
1.5i+8+-
1.5i=ll-4+
3.4i--6+-
8.1i=2+
11.5i测试提取实部虚部-
5.4+
1.2i-
5.4---------------
1.
25.4+
3.2i
5.4-------------
3.2通过提取实部虚部求的共枕复数Z10Press anykey tocontinue.心得体会(含上机中所遇问题的解决办法,所使用到的编程技巧、创新点及编程的心得)。
个人认证
优秀文档
获得点赞 0