#include <iostream>
using namespace std;
template<class T>
class Fractions{ //分数类
private:
T molecule; //分子
T denominator; //分母
public:
Fractions(){}
Fractions(T molecule,T denominator):molecule(molecule),denominator(denominator){
try{
if(molecule==0){
throw 0;
}
}catch(int){
cout<<"分母不为零"<<endl;
}
}
void print(){
cout<<molecule<<"/"<<denominator<<endl;
}
Fractions operator+(Fractions &a);
Fractions operator-(Fractions &a);
Fractions operator*(Fractions &a);
Fractions operator/(Fractions &a);
};
template <class T>
Fractions<T> Fractions<T>::operator+(Fractions &a){
return Fractions(denominator*a.molecule+molecule*a.denominator,denominator*a.denominator);
}
template <class T>
Fractions<T> Fractions<T>::operator-( Fractions &a){
return Fractions(denominator*a.molecule-molecule*a.denominator,denominator*a.denominator);
}
template <class T>
Fractions<T> Fractions<T>::operator*( Fractions &a){
return Fractions(molecule*a.molecule,denominator*a.denominator);
}
template <class T>
Fractions<T> Fractions<T>::operator/( Fractions &a){
try {
if (a.molecule==0){
throw 0;
}
}
catch(int){
cout<<"不成立"<<endl;
}
return Fractions(molecule*a.denominator,denominator*a.molecule);
}
int main() {
Fractions<int>a1(4,3);
a1.print();
Fractions<int>a2(8,3);
a2.print();
Fractions<int>a3(5,0);
a3.print();
Fractions<int>a4=a1+a2;
a4.print();
Fractions<int>a5=a1-a2;
a5.print();
Fractions<int>a6=a1*a2;
a6.print();
Fractions<int>a7=a1/a2;
a7.print();
Fractions<float>b(0,4.8);
b.print();
Fractions<float>b1(1.8,2.5);
b1.print();
Fractions<float>b2(1.6,4.6);
b2.print();
Fractions<float>b3=b1+b2;
b3.print();
Fractions<float>b4=b1-b2;
b4.print();
Fractions<float>b5=b1*b2;
b5.print();
Fractions<float>b6=b1/b2;
b6.print();
Fractions<float>b7=b2/b;
b7.print();
return 0;
}
实验五:模板和异常处理程序设计(2学时)实验目的1.了解参数多态性的概念。2.练掌握函数模板和类模析的设计和使用方法。实验内容设计一个求三个数中最大值的函数模板,并设计一个程序进行测试
最新推荐文章于 2024-09-11 19:54:50 发布