c++实验4

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

  

猜你喜欢

转载自www.cnblogs.com/-19990406-whhw/p/8904057.html