
3个回答
2013-07-01
展开全部
#include<stdio.h>
class CFraction //分数类
{
private:
double m_numerator; //分子
double m_denominator;//分母
public:
CFraction(double dNumerator,double dDenominator)
{
m_numerator = dNumerator;
//分母不能为0,如果dDenominator为0则m_denominator赋1
m_denominator = dDenominator==0?1:dDenominator;
}
//给分子,分母赋值
void setValue(double dNumerator,double dDenominator)
{
m_numerator = dNumerator;
//分母不能为0,如果dDenominator为0则m_denominator赋1
m_denominator = dDenominator==0?1:dDenominator;
}
//获取分子的值
double getNumerator()
{
return m_numerator;
}
//获取分母的值
double getDenominator()
{
return m_denominator;
}
//获取分子除以分母的值
double getValue()
{
return m_numerator/m_denominator;
}
//获取两个分数相加的值
double operator+(CFraction objCF)
{
double denominator = 0;
double numerator = 0;
denominator = this->m_denominator * objCF.getDenominator();
numerator = this->m_numerator * objCF.getDenominator() + this->m_denominator*objCF.getNumerator();
return numerator / denominator;
}
//获取两个分数相减的值
double operator-(CFraction objCF)
{
double denominator = 0;
double numerator = 0;
denominator = this->m_denominator * objCF.getDenominator();
numerator = this->m_numerator * objCF.getDenominator() - this->m_denominator*objCF.getNumerator();
return numerator / denominator;
}
};
main()
{
CFraction fra1(1,2),fra2(1,2);
printf("1/2 + 1/2 = %g\n",fra1+fra2);
fra1.setValue(4,5);
fra2.setValue(3,5);
printf("4/5 + 3/5 = %g\n",fra1+fra2);
fra1.setValue(3,4);
fra2.setValue(1,4);
printf("3/4 - 1/4 = %g\n",fra1-fra2);
}
class CFraction //分数类
{
private:
double m_numerator; //分子
double m_denominator;//分母
public:
CFraction(double dNumerator,double dDenominator)
{
m_numerator = dNumerator;
//分母不能为0,如果dDenominator为0则m_denominator赋1
m_denominator = dDenominator==0?1:dDenominator;
}
//给分子,分母赋值
void setValue(double dNumerator,double dDenominator)
{
m_numerator = dNumerator;
//分母不能为0,如果dDenominator为0则m_denominator赋1
m_denominator = dDenominator==0?1:dDenominator;
}
//获取分子的值
double getNumerator()
{
return m_numerator;
}
//获取分母的值
double getDenominator()
{
return m_denominator;
}
//获取分子除以分母的值
double getValue()
{
return m_numerator/m_denominator;
}
//获取两个分数相加的值
double operator+(CFraction objCF)
{
double denominator = 0;
double numerator = 0;
denominator = this->m_denominator * objCF.getDenominator();
numerator = this->m_numerator * objCF.getDenominator() + this->m_denominator*objCF.getNumerator();
return numerator / denominator;
}
//获取两个分数相减的值
double operator-(CFraction objCF)
{
double denominator = 0;
double numerator = 0;
denominator = this->m_denominator * objCF.getDenominator();
numerator = this->m_numerator * objCF.getDenominator() - this->m_denominator*objCF.getNumerator();
return numerator / denominator;
}
};
main()
{
CFraction fra1(1,2),fra2(1,2);
printf("1/2 + 1/2 = %g\n",fra1+fra2);
fra1.setValue(4,5);
fra2.setValue(3,5);
printf("4/5 + 3/5 = %g\n",fra1+fra2);
fra1.setValue(3,4);
fra2.setValue(1,4);
printf("3/4 - 1/4 = %g\n",fra1-fra2);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-01
展开全部
class CScore
{
public:
CScore(int x,int y)
{
m_x=x;
m_y=y;
}
int Add(int x,int y);
int Sub(int x,int y);
private:
int m_x;
int m_y;
};
int CScore::Add(int x,int y)
{
return x+y;
}
int CScore::Sub(int x,int y)
{
return x-y;
}
{
public:
CScore(int x,int y)
{
m_x=x;
m_y=y;
}
int Add(int x,int y);
int Sub(int x,int y);
private:
int m_x;
int m_y;
};
int CScore::Add(int x,int y)
{
return x+y;
}
int CScore::Sub(int x,int y)
{
return x-y;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-01
展开全部
#include <iostream>
using namespace std;
class fenshu {
public:
fenshu(int a, int b)
: up(a), down(b)
{
if(!b)
throw "分母不能为0!\n";
}
fenshu operator+(const fenshu f)
{
fenshu a(*this);
int l = abs(lcm(down, f.down));
a.up = up*(l/down) + f.up*(l/f.down);
int i;
if((i = abs(gcd(a.up, l))) != 1)
a.up /= i, l /= i;
a.down = l;
return a;
}
fenshu operator-(const fenshu& f)
{
return *this + -f;
}
fenshu operator-() const
{
fenshu f(*this);
f.up = -f.up;
return f;
}
friend ostream& operator <<(ostream& os, const fenshu& f)
{
os << f.up << '/' << f.down;
return os;
}
friend istream& operator >>(istream& is, fenshu& f)
{
is >> f.up >> f.down;
if(f.down < 0)
f.up = -f.up, f.down = -f.down;
return is;
}
private:
int up;
int down;
static int gcd(int a, int b) { return b % a ? gcd(b % a, a) : a; }
static int lcm(int a, int b) { return (a*b)/gcd(a,b); }
};
int main()
{
fenshu a(1, 2), b(3, 4);
cout << a + b << '\n';
cout << a - b << '\n';
try {fenshu(1, 0);}
catch(const char* s) {
cout << s;
}
}
using namespace std;
class fenshu {
public:
fenshu(int a, int b)
: up(a), down(b)
{
if(!b)
throw "分母不能为0!\n";
}
fenshu operator+(const fenshu f)
{
fenshu a(*this);
int l = abs(lcm(down, f.down));
a.up = up*(l/down) + f.up*(l/f.down);
int i;
if((i = abs(gcd(a.up, l))) != 1)
a.up /= i, l /= i;
a.down = l;
return a;
}
fenshu operator-(const fenshu& f)
{
return *this + -f;
}
fenshu operator-() const
{
fenshu f(*this);
f.up = -f.up;
return f;
}
friend ostream& operator <<(ostream& os, const fenshu& f)
{
os << f.up << '/' << f.down;
return os;
}
friend istream& operator >>(istream& is, fenshu& f)
{
is >> f.up >> f.down;
if(f.down < 0)
f.up = -f.up, f.down = -f.down;
return is;
}
private:
int up;
int down;
static int gcd(int a, int b) { return b % a ? gcd(b % a, a) : a; }
static int lcm(int a, int b) { return (a*b)/gcd(a,b); }
};
int main()
{
fenshu a(1, 2), b(3, 4);
cout << a + b << '\n';
cout << a - b << '\n';
try {fenshu(1, 0);}
catch(const char* s) {
cout << s;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询