-
کلاس اعداد کسری
سلام
این کلاس اعداد کسریه که تمام عملگرهایی را که به ذهنم اومد رو تعریف کردم.
کد:
//adad kasry
#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
//************************************
class kasr{
friend ostream &operator<<(ostream&,const kasr&);
private:
int x;
int y;
public:
kasr(int=0,int=1);
void input();
void sade(int,int);
kasr operator+(kasr);
kasr operator-(kasr);
kasr operator*(kasr);
kasr operator/(kasr);
void operator%(kasr) const;
kasr operator++();
kasr operator--();
kasr operator++(int);
kasr operator--(int);
kasr operator+=(kasr);
kasr operator-=(kasr);
kasr operator*=(kasr);
kasr operator/=(kasr);
void operator%=(kasr) const;
int operator==(kasr) const;
int operator!=(kasr) const;
int operator>(kasr) const;
int operator<(kasr) const;
int operator>=(kasr) const;
int operator<=(kasr) const;
int operator!();
void print() const{cout<<x<<'/'<<y<<endl;}
};
//************************************
void kasr::input()
{
cout<<"\nEnter soorate kasr:";
cin>>x;
cout<<"\nEnter makhraje kasr:";
cin>>y;
sade(x,y);
}
//************************************
kasr::kasr(int a,int b)
{
x=a;
y=b;
if(b==0)
{
cout<<"Division by zero.";
getch();
exit(0);
}
sade(a,b);
}
//************************************
void kasr::sade(int a,int b)
{
int i,m;
x=a;
y=b;
m=(x<y)?x:y;
for(i=m;i>1;i--)
if(y%i==0&&x%i==0)
{
y/=i;
x/=i;
if(x==1||y==1)
break;
}
}
//************************************
kasr kasr::operator+(kasr ob)
{
kasr temp;
temp.x=y*ob.y/y*x+y*ob.y/ob.y*ob.x;
temp.y=y*ob.y;
temp.sade(temp.x,temp.y);
return temp;
}
//************************************
kasr kasr::operator-(kasr ob)
{
kasr temp;
temp.x=y*ob.y/y*x-y*ob.y/ob.y*ob.x;
temp.y=y*ob.y;
temp.sade(temp.x,temp.y);
return temp;
}
//************************************
kasr kasr::operator*(kasr ob)
{
kasr temp;
temp.x=x*ob.x;
temp.y=y*ob.y;
temp.sade(temp.x,temp.y);
return temp;
}
//************************************
kasr kasr::operator/(kasr ob)
{
kasr temp;
temp.x=x*ob.y;
temp.y=y*ob.x;
temp.sade(temp.x,temp.y);
return temp;
}
//************************************
void kasr::operator%(kasr) const
{
cout<<"\nTHIS IS IMPOSSIBLE !\n";
}
//************************************
int kasr::operator==(kasr ob) const
{
kasr temp;
if(x==ob.x&&y==ob.y)
return 1;
return 0;
}
//************************************
int kasr::operator!=(kasr ob) const
{
if(*this==ob)
return 0;
return 1;
}
//************************************
int kasr::operator>(kasr ob) const
{
if((float)x/y>(float)ob.x/ob.y)
return 1;
return 0;
}
//************************************
int kasr::operator<(kasr ob) const
{
if(*this>ob)
return 0;
return 1;
}
//************************************
int kasr::operator>=(kasr ob) const
{
if((float)x/y>=(float)ob.x/ob.y)
return 1;
return 0;
}
//************************************
int kasr::operator<=(kasr ob) const
{
if((float)x/y<=(float)ob.x/ob.y)
return 1;
return 0;
}
//************************************
kasr kasr::operator++()
{
kasr temp(1,1);
*this+=temp;
}
//************************************
kasr kasr::operator--()
{
kasr temp(1,1);
*this-=temp;
}
//************************************
kasr kasr::operator++(int)
{
kasr temp(1,1);
*this+=temp;
}
//************************************
kasr kasr::operator--(int)
{
kasr temp(1,1);
*this-=temp;
}
//************************************
kasr kasr::operator+=(kasr ob)
{
*this=*this+ob;
}
//************************************
kasr kasr::operator-=(kasr ob)
{
*this=*this-ob;
}
//************************************
kasr kasr::operator*=(kasr ob)
{
*this=*this*ob;
}
//************************************
kasr kasr::operator/=(kasr ob)
{
*this=*this/ob;
}
//************************************
void kasr::operator%=(kasr) const
{
cout<<"\nTHIS IS IMPOSSIBLE !\n";
}
//************************************
int kasr::operator!()
{
int temp;
temp=x;
x=y;
y=temp;
sade(x,y);
}
//************************************
ostream &operator<<(ostream &output,const kasr &ob)
{
output<<ob.x<<'/'<<ob.y<<endl;
}
//************************************
int main()//For example
{
int a=1,b=0;
kasr ob1(3,2),ob2(6,4),ob;
ob1.input();
cout<<ob1;
getch();
return 0;
}
-
سلام دوست عزيز.
در مورد برنامه هايي كه مينويسيد كامل توضيح بديد كه همه بتونن استفاده كنند.
در ضمن اين توابع مقدار برگشتي شون رو ننوشتيد. كه فكر ميكنم از برنامه جا مونده.
کد:
kasr::operator++
kasr::operator--
kasr::operator++
kasr::operator--
kasr::operator+=
kasr::operator-=
kasr::operator*=
kasr::operator/=
kasr::operator!
و تابع
کد:
ostream &operator<<(ostream &output,const kasr &ob)
{
output<<ob.x<<'/'<<ob.y<<endl;
}
بايد به صورت زير اصلاح بشه.
کد:
ostream &operator<<(ostream &output,const kasr &ob)
{
output<<ob.x<<'/'<<ob.y<<endl;
return output;
}
ممنون.
-
ببخشيد
عجله كردم اونارو جا انداختم
شرمنده ي همتون