Написал класс дробей алгебраические операции сделал, а логические нет, надо сделать >,<,==,!=,>=,<=, помогите срочно курсовая горит
| Код |
#include <iostream> #include <string> using namespace std; class drobi { private: int Nod(int x=0, int y=1); // Íàõîæäåíå íàèáîëüøåãî îáùåãî äåëèòåëÿ int a; //÷èñëèòåëü int b;//çíàìåíàòåëü public: drobi operator +(drobi x); drobi operator -(drobi x); drobi operator /(drobi x); drobi operator *(drobi x); void vvod(); void vivod(); void chast();/*Âûäåëåíèå öåëîé ÷àñòè*/ void sokr(); drobi operator ^(int n); bool operator<(drobi x); bool operator>(drobi x); bool operator!=(drobi x); bool operator==(drobi x); bool operator>=(drobi x); bool operator<=(drobi x); }; int main() {drobi a,b,x; a.vvod(); b.vvod(); cout<<"Drob 1: "; a.vivod(); cout<<endl; cout<<"Drob 2: "; b.vivod(); cout<<endl; cout<<"A + B ="; x=a+b; x.vivod(); x.sokr(); cout<<" Pravil'naya: "; x.chast(); cout<<endl; cout<<"A - B ="; x=a-b; x.vivod(); cout<<" Pravil'naya: "; x.chast(); cout<<endl; cout<<"A / B ="; x=a/b; x.vivod(); x.sokr(); cout<<" Pravil'naya: "; x.chast(); cout<<endl; cout<<"A * B ="; x=a*b; x.vivod(); x.sokr(); cout<<" Pravil'naya: "; x.chast(); cout<<endl; cout<<"A ^ 4 ="; x=a^4; x.vivod(); x=b^4; x.vivod(); cout<<endl; cout<<endl; system("PAUSE"); return 0; } /* Ââîä öèôð */ void drobi::vvod() { cout<<"Vvedite Chislitel: "<<endl; cin>>a; if (a==0) {while (a==0) {cout<<" Nepravil'no vvedeno chislo. Nel'zya vvodit' 0. Povtorite vvod: "; cin>>a;}} cout<<"Vvedite Znamenatel: "<<endl; cin>>b; if (b<0) {while (b<0) {cout<<" Nepravil'no vvedeno chislo. Nel'zya vvodit' 0. Povtorite vvod: "; cin>>b;}} if (b==0) {while (b==0) {cout<<" Nepravil'no vvedeno chislo. Nel'zya vvodit' 0. Povtorite vvod: "; cin>>b;}} cout<<endl; } /* Âûâîä äðîáè */ void drobi::vivod() { cout<<a<<"/"<<b; cout<<endl; }
drobi drobi ::operator +(drobi x) {drobi d; if ((b%x.b!=0)&&(x.b%b!=0)) d.b=b*x.b; else if (b>x.b) d.b=b; else if (b<x.b) d.b=x.b; else d.b=b; d.a=a*(d.b/b)+x.a*(d.b/x.b); return d ; }
drobi drobi ::operator -(drobi x) {drobi d; if ((b%x.b!=0)&&(x.b%b!=0)) d.b=b*x.b; else if (b>x.b) d.b=b; else if (b<x.b) d.b=x.b; else d.b=b; d.a=a*(d.b/b)-x.a*(d.b/x.b); return d ; }
drobi drobi ::operator /(drobi x) {drobi d; d.a=a*x.b; d.b=b*x.a; return d; }
drobi drobi ::operator *(drobi x) {drobi d; d.a=a*x.a; d.b=b*x.b; return d; }
void drobi::chast() {int x; x=0; if (a>b) {x=a/b; a=a%b;} if (x!=0) cout<<x<<" "<<a<<"/"<<b<<endl; else cout<<a<<"/"<<b<<endl; }
drobi drobi:: operator ^(int n) {drobi d; int i; d.a=1; d.b=1; for(i=1;i<=n;i++) d=d*(*this); return d; }
int drobi::Nod (int x, int y) {a=x; b=y; while (x!=y) { if(x>y) if(x%y!=0) x=x%y; else x=y; else if (y%x!=0) y=y%x; else y=x; } return x; }
void drobi::sokr() { if(a==0) return; int n=Nod(a,b); a=a/n; b=b/n; cout<<"sokr:"; cout<<endl; cout<<a<<"/"<<b; cout<<endl; }
|
|