实验五 实用模板与异常处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.对用类模板实现线性表不是很懂。

任课教师签名:

相关文档
最新文档