Re: 計程第2題

看板ZooStudy作者 (Bach's Largo..........)時間21年前 (2003/01/03 22:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
我的應該可以跑: //rationalnumber.h #ifndef RATIONALNUMBER_H #define RATIONALNUMBER_H #include<iostream> using std::ostream ; using std::istream ; class rationalnumber { friend ostream &operator<<(ostream &,const rationalnumber &); public: rationalnumber(int=0,int=1); rationalnumber operator+(const rationalnumber&) ; rationalnumber operator-(const rationalnumber&) ; rationalnumber operator*(const rationalnumber&) ; rationalnumber operator/(const rationalnumber&) ; const rationalnumber &operator=(const rationalnumber&); bool operator==(rationalnumber &); bool operator>(rationalnumber &); bool operator<(rationalnumber &); void reducedfraction(int,int); private: int nu; int de; }; #endif //rationalnumber.cpp #include <iostream> using std::cout; using std::cin; #include"rationalnumber.h" rationalnumber::rationalnumber(int n,int d) { if(d<0) { cout<<"invalid denominator imput\nset denominator to 1"; d=1; } reducedfraction(n,d); } void rationalnumber::reducedfraction(int n,int d) { int small,m; if(n!=0) { if(n<0) m=(-1)*n; else m=n; if(m>d) small=d; else small=m; for(;m%small!=0 || d%small!=0;small--) ; nu=m/small; if(n<0) nu*=(-1); de=d/small; } else {nu=n; de=d;} } ostream &operator<<(ostream &output, const rationalnumber &A) { output<<A.nu <<"/" <<A.de ; return output; } rationalnumber rationalnumber::operator +(const rationalnumber &operand2) { return rationalnumber(nu*operand2.de+de*operand2.nu,de*operand2.de); } rationalnumber rationalnumber::operator -(const rationalnumber &operand2) { return rationalnumber(nu*operand2.de-de*operand2.nu,de*operand2.de); } rationalnumber rationalnumber::operator *(const rationalnumber &operand2) { return rationalnumber(nu*operand2.nu,de*operand2.de); } rationalnumber rationalnumber::operator /(const rationalnumber &operand2) { if(de*operand2.nu!=0) return rationalnumber(nu*operand2.de,de*operand2.nu); else cout<<"The denominator here is invalid(0) , set it to 1\n"; return rationalnumber(nu*operand2.de,1); } const rationalnumber& rationalnumber::operator=(const rationalnumber &right) { nu=right.nu; de=right.de; return *this; } bool rationalnumber::operator==(rationalnumber &a) { if(nu!=0 || a.nu !=0) return(nu==a.nu && de==a.de ); else return true; } bool rationalnumber::operator >(rationalnumber &a) { rationalnumber r=(*this)-a; return(r.nu>0 && r.de > 0); } bool rationalnumber::operator <(rationalnumber &a) { rationalnumber r=(*this)-a; return(r.nu<0 || r.de < 0); } //main.cpp #include <iostream> using std::ostream; using std::istream; using std::cout; using std::cin; using std::endl; #include"rationalnumber.h" int main() { rationalnumber r1(1,4),r2(0,6),k; cout<<"r1="<<r1; cout<<"\nr2="<<r2<<endl; k=r1+r2; cout<<"k=r1+r2="<<k<<endl; k=r1-r2; cout<<"k=r1-r2="<<k<<endl; k=r1*r2; cout<<"k=r1*r2="<<k<<endl; k=r1/r2; cout<<"k=r1/r2="<<k<<endl; if(r1==r2) cout<<"r1=r2"<<endl; if(r1>r2) cout<<"r1>r2"<<endl; if(r1<r2) cout<<"r1<r2"<<endl; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 61.226.135.64

推 61.226.114.8 01/04, , 1F
明天再來研究一下:P
推 61.226.114.8 01/04, 1F
文章代碼(AID): #-5QD8lw (ZooStudy)