实验五:模板和异常处理程序设计(2学时)实验目的1.了解参数多态性的概念。2.练掌握函数模板和类模析的设计和使用方法。实验内容设计一个求三个数中最大值的函数模板,并设计一个程序进行测试

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

diary_chao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值