#include"Fraction.h" #include<iostream> #include<cmath> using namespace std; int Fraction::gct(int a,int b){ return a%b==0?b:gct(b,a%b); } Fraction::Fraction():top(0),bottom(1){ } Fraction::Fraction(int t):top(t),bottom(1){ } Fraction::Fraction(int t,int b):top(t),bottom(b){ } void Fraction::add(Fraction &p){ top=top*p.bottom+p.top*bottom; bottom=bottom*p.bottom; form(); op(); } void Fraction::sub(Fraction &p){ top=top*p.bottom-p.top*bottom; bottom=bottom*p.bottom; form(); op(); } void Fraction::mul(Fraction &p){ top=top*p.top; bottom=bottom*p.bottom; form(); op(); } void Fraction::div(Fraction &p){ top=top*p.bottom; bottom=p.top*bottom; form(); op(); } void Fraction::form(){ if(bottom<0){ bottom*=-1; top*=-1; } int g=gct(abs(top),abs(bottom)); top/=g; bottom/=g; } void Fraction::ip(){ cout<<"输入分子"<<endl; cin>>top; int bo; cout<<"输入分母"<<endl; cin>>bo; while(bo==0){ cout<<"请重新输入"<<endl; cin>>bo; } bottom=bo; } void Fraction::op(){ form(); if(bottom!=1) cout<<top<<"/"<<bottom<<endl; else cout<<top<<endl; }
#include"Fraction.h" #include<iostream> #include<cmath> using namespace std; int main(){ Fraction a; Fraction b(3,4); Fraction c(5); cout<<"输出a的初值"<<endl; a.op(); cout<<"输入a"<<endl; a.ip(); cout<<"a的新值"<<endl; a.op(); cout<<"输出b,c"<<endl; b.op(); c.op(); cout<<"b,c的加减乘除"<<endl; b.add(c); b.sub(c); b.mul(c); b.div(c); return 0; }
class Fraction { private: int top; int bottom; int gct(int a,int b); public: Fraction(); Fraction(int t); Fraction(int t,int b); void add(Fraction &p); void sub(Fraction &p); void mul(Fraction &p); void div(Fraction &p); void for
m(); void ip(); void op(); };