实验五 实用模板与异常处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
皖西学院信息工程学院School of Information and Engineering, West Anhui University
《面向对象方法与C++程序设计》
实验报告
专业计算机科学与技术专业
班级计科1202班
姓名柯冬生
学号2012013854
任课教师何富贵
实验五模板与异常处理(2学时)
学号:2012013854 姓名:柯冬生班级:计科1202班成绩:
}
代码:
(1)
#include
using namespace std;
template
T max(T x,T y)
{ return x>y?x:y;}
int max(int a,int b)
{ return a>b?a:b;}
double max(double a,double b)
{ return a>b?a:b;}
int main()
{
cout<<"max('3','7') is "< return 0; } (2) #include using namespace std; int max(int a,int b) { return a>b?a:b;} double max(double a,double b) { return a>b?a:b;} int main() { cout<<"max('3','7') is "< return 0; } 实验结果: (1) 定义了一个求最大值的函数模板,定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名非模板函数与函数模板重载.’3’和’7’均是字符型,找不到与之匹配的函数,所以调用了函数模板,使其实例化,由’T’型转变为’char’型。 (2) 定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.’3’和’7’均是字符型,找不到与之匹配的函数,所以得不出正确结果。 2.编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。 代码: #include using namespace std; template T max (T * x,int n) { T max=x[0]; for(int i=1;i max=max>x[i]? max:x[i]; return max; } template T min (T * x,int n) { T min=x[0]; for(int i=1;i min=min return min; } int main() { int a[5]={ 1,4,2,3,5 }; double b[5]={1.1,4.4,2.2,3.3,5.5}; cout<<"数组a[5]={ 1,4,2,3,5}的最大值is: "< cout<<"数组a[5]={ 1,4,2,3,5}的最小值is: "< cout<<"数组b[5]={1.1,4.4,2.2,3.3,5.5}的最大值is: "< cout<<"数组b[5]={1.1,4.4,2.2,3.3,5.5}的最小值is: "< return 0; } 实验结果: 3.编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。 【提示】 设计一个类模板 template class Array{ ... }; cout<<"***int型数组***"< cout<<"原函数为:"< for(int i=0;i<5;i++) { cout< } cout< a.sort(); a.invert(); a.seek(3); a.sum(); cout<<"***double型数组***"< cout<<"原函数为:"< for(int j=0;j<4;j++) { cout< } cout< b.sort(); b.invert(); b.seek(8.9); b.sum(); return 0; } 实验结果: 4.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。代码: #include #include using namespace std; void main() { double number; double result; cout << "请输入一个数: "; cin >> number; try { if (number < 0) { throw exception("输入的数是负数! "); } result = sqrt(number); cout << "平方根是:" << result << endl; } catch (exception e) { cout << e.what() << endl; } } 实验结果: 三、实验总结: 1.在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。 2.对异常处理有了一些理解,但不知道异常处理(如第4题)可以循环吗? 3.对用类模板实现线性表不是很懂。 任课教师签名: