مشكل در انجام كار تابع قدر مطلق
سلام
دوستان اين برنامه هيچ مشكلي در كامپايل شدن نداره وتنها مشكلي كه داره هنگام اجراي برنامه است
اگه شما در هنگام اجراي اين برنامه شماره ي 7 رو بزنيد برنامه مي بايست تابع abs كه همون تابع قدر مطلق باشه رو فراخوني كنه ولي مشكل اينجاست كه برنامه هنوز اين تابع رو فراخوني نكرده از اون در مياد و من ميخوام بدونم چرا اينطور ميشه لطفا در حل سوالم بهم كمك كنيد:46::11:
کد:
#include <iostream>
#define EVER ;;
using namespace std;
class Add
{
public:
Add();
Add(int);
~Add() {}
Add(const Add&);
Add& operator+(const Add&);
void SetAdd(int);
int GetAdd() const;
friend ostream& operator<<(ostream& os,Add& ad)
{
os << ad.GetAdd();
return os;
}
private:
int itsX;
};
Add::Add():
itsX(0)
{}
Add::Add(int x):
itsX(x)
{}
Add::Add(const Add& rhs)
{
this->itsX = rhs.GetAdd();
}
Add& Add::operator+(const Add& rhs)
{
this->itsX += rhs.GetAdd();
return *this;
}
void Add::SetAdd(int x)
{
itsX = x;
}
int Add::GetAdd() const
{
return itsX;
}
class Minus
{
public:
Minus();
Minus(int);
~Minus() {}
Minus(const Minus&);
Minus& operator-(const Minus&);
void SetM(int x) { itsX = x; }
int GetM() const { return itsX; }
friend ostream& operator <<(ostream& os,Minus& mi)
{
os << mi.GetM();
return os;
}
private:
int itsX;
};
Minus::Minus():
itsX(0)
{}
Minus::Minus(int x):
itsX(x)
{}
Minus::Minus(const Minus& rhs)
{
itsX = rhs.GetM();
}
Minus& Minus::operator -(const Minus& rhs)
{
this->itsX -= rhs.GetM();
return *this;
}
class Zarb
{
public:
Zarb():itsX(0){}
Zarb(int x):itsX(x){}
~Zarb() {}
Zarb(const Zarb&);
Zarb& operator * (const Zarb&);
void SetZ(int x) { itsX = x; }
int GetZ() const { return itsX; }
friend ostream& operator << (ostream& os,Zarb& za)
{
os << za.GetZ();
return os;
}
private:
int itsX;
};
Zarb::Zarb(const Zarb& rhs)
{
itsX = rhs.GetZ();
}
Zarb& Zarb::operator *(const Zarb& rhs)
{
this->itsX *= rhs.GetZ();
return *this;
}
class Taghsim
{
public:
Taghsim():itsX(0){}
Taghsim(int x):itsX(x){}
~Taghsim(){}
Taghsim(const Taghsim&);
Taghsim& operator / (const Taghsim&);
void SetT(int x) { itsX = x; }
int GetT() const { return itsX; }
friend ostream& operator << (ostream& os,Taghsim& ta)
{
os <<ta.GetT();
return os;
}
private:
int itsX;
};
Taghsim::Taghsim(const Taghsim& rhs)
{
itsX = rhs.GetT();
}
Taghsim& Taghsim::operator / (const Taghsim& rhs)
{
int temp;
temp = this->itsX / rhs.GetT();
this->itsX = temp;
return *this;
}
class Jazr
{
public:
Jazr():itsX(0){}
Jazr(int x):itsX(x){}
~Jazr(){}
Jazr(const Jazr&);
int JazrFunc(int);
void SetJ(int x) { itsX = x; }
float GetJ() const { return itsX; }
friend ostream& operator << (ostream& os,Jazr& ja)
{
os << ja.JazrFunc(ja.GetJ());
return os;
}
private:
int itsX;
};
Jazr::Jazr(const Jazr& rhs):itsX(rhs.GetJ())
{}
int Jazr::JazrFunc(int tmp)
{
if(tmp * tmp == this->itsX)
return tmp;
return JazrFunc(tmp - 1);
}
class Power
{
public:
Power():itsPower(0),itsNumber(0){}
Power(int p,int n):itsPower(p),itsNumber(n){}
~Power(){}
int GetPower() const { return itsPower; }
int GetNumber() const { return itsNumber; }
void SetPower(int p) { itsPower = p; }
void SetNumber(int n) { itsNumber = n; }
long PowerFunction(int,int);
friend ostream operator << (ostream os,Power po)
{
os << po.PowerFunction(po.GetPower(),po.GetNumber());
return os;
}
private:
int itsPower;
int itsNumber;
};
long Power::PowerFunction(int p,int n)
{
if(p == 1)
return n;
return PowerFunction(p-1,n * itsNumber);
}
void GhadreMotlagh();
void PowerFunc();
void AddFunc();
void MinusFunc();
void ZarbFunc();
void TaghsimFunc();
void JazrFunc();
int main()
{
int choice;
for(EVER)
{
cout <<"\n(1)Add(2)Minus(3)Zarb(4)Taghsim(5)JazrFunc(6)Power(7)abs(0 to quit)";
cin>>choice;
if(choice == 0)
break;
switch(choice)
{
case(1): AddFunc(); break;
case(2): MinusFunc(); break;
case(3): ZarbFunc(); break;
case(4): TaghsimFunc(); break;
case(5): JazrFunc(); break;
case(6): PowerFunc(); break;
case(7): GhadreMotlagh(); break;
default: cout <<"\nAre you ok?!\n"; break;
}
}
return 0;
}
void AddFunc()
{
int one,two;
cout <<"\nEnter number one:";
cin>>one;
cout <<"\nEnter number two:";
cin>>two;
Add One(one);
Add Two(two);
cout <<"\n->\t"<<One + Two <<endl;
}
void MinusFunc()
{
int one,two;
cout <<"\nEnter number one:";
cin>>one;
cout <<"\nEnter number two:";
cin>>two;
Minus One(one);
Minus Two(two);
cout <<"\n->\t"<<One - Two <<endl;
}
void ZarbFunc()
{
int one,two;
cout <<"\nEnter number one:";
cin>>one;
cout <<"\nEnter number two:";
cin>>two;
Zarb One(one);
Zarb Two(two);
cout <<"\n->\t"<<One * Two <<endl;
}
void TaghsimFunc()
{
int one,two;
cout <<"\nEnter number one:";
cin>>one;
cout <<"\nEnter number two:";
cin>>two;
Taghsim One(one);
Taghsim Two(two);
cout <<"\n->\t"<<One / Two <<endl;
}
void JazrFunc()
{
float number;
cout<<"\nEnter your number:";
cin>>number;
Jazr jazr(number);
cout <<"\n->\t"<< jazr <<endl;
}
void PowerFunc()
{
int p,n;
cout <<"Enter number:";
cin>>n;
cout <<"\nEnter Power:";
cin>>p;
Power power(p,n);
cout <<"\n->\t"<<power<<endl;
}
void GhadreMotlagh()
{
char ch[500];
cout <<"\nEnter your number:";
cin.getline(ch,500);
if(ch[0] == '-')
ch[0] = '+';
cout <<ch<<endl;
}