C++ 设计一个分数类fration,其中包含以下功能:能防止分母为0的构造函数; 对非最简分数进行约分的成员函数;加、减、乘、除运算符重载函数(用友元函数实现); 关系运算符、赋值运算符、流
设计一个分数类fration:
#include
using namespace std;
class fraction { //定义分数
int numerator;//分子
int denominator;//分母
public:
fraction(int x = 0, int y = 1);//默认分子为0,分母为1,函数体中必须有控制分母不为0的条件
fraction(const fraction& f);
int max_divisor();//求分子分母的最大公约数
friend fraction operator+(const fraction& f1, const fraction& f2);
friend fraction operator-(const fraction f1, const fraction& f2);
friend fraction operator*(const fraction& f1, const fraction& f2);
friend fraction operator/(const fraction& f1, const fraction& f2);
friend bool operator>=(const fraction& f1, const fraction& f2);
friend ostream& operator<<(ostream& os, const fraction& f);
friend istream& operator>>(istream& is, fraction& f);
};
fraction::fraction(int x, int y)
{
numerator = x;
denominator = y;
}
fraction::fraction(const fraction& f)
{
numerator = f.numerator;
denominator = f.denominator;
}
int fraction::max_divisor()
{
int m, n,r;
m=numerator;n= denominator;
do
{
r = m % n;
m = n;
n = r;
} while (r != 0);
return m;
}
fraction operator+(const fraction& f1, const fraction& f2)
{
fraction t;
int g;
t.numerator = f1.numerator * f2.denominator + f1.denominator * f2.numerator;
t.denominator = f1.denominator * f2.denominator;
g = t.max_divisor();
t.numerator = t.numerator / g;
t.denominator = t.denominator / g;
return t;
}
fraction operator-(const fraction f1, const fraction& f2)
{
fraction t;
int g;
t.numerator = f1.numerator * f2.denominator - f1.denominator * f2.numerator;
t.denominator = f1.denominator * f2.denominator;
g = t.max_divisor();
t.numerator = t.numerator / g;
t.denominator = t.denominator / g;
return t;
}
fraction operator*(const fraction& f1, const fraction& f2)
{
fraction t;
int g;
t.numerator = f1.numerator * f2.numerator;
t.denominator = f1.denominator * f2.denominator;
g = t.max_divisor();
t.numerator = t.numerator / g;
t.denominator = t.denominator / g;
return t;
}
fraction operator/(const fraction& f1, const fraction& f2)
{
fraction t;
int g;
t.numerator = f1.numerator * f2.denominator;
t.denominator = f1.denominator * f2.numerator;
g = t.max_divisor();
t.numerator = t.numerator / g;
t.denominator = t.denominator / g;
return t;
}
bool operator>=(const fraction& f1, const fraction& f2)
{
if (f1.denominator * f2.denominator > 0)
{
if (f1.numerator * f2.denominator < f1.denominator * f2.numerator)
return false;
else
return true;
}
if (f1.denominator * f2.denominator < 0)
{
if (f1.numerator * f2.denominator > f1.denominator * f2.numerator)
return false;
else
return true;
}
if (f1.denominator * f2.denominator == 0)
cout << “错误”;
}
ostream& operator<<(ostream& os, const fraction& f)
{
os << f.numerator << “/” << f.denominator << endl;
return os; // TODO: 在此处插入 return 语句
}
istream& operator>>(istream& is, fraction& f)
{
cout << “分子:”;
is >> f.numerator;
cout << “分母:”;
is >> f.denominator; // TODO: 在此处插入 return 语句
return is;
}
int main()
{
fraction f1(1, 3);
fraction f2(1, 5);
/* cout << “请输入分数f2:” << endl;
cin >> f2;*/
cout << “f1 - f2=” << f1 - f2 << endl;
cout << “f1 + f2=” << f1 + f2 << endl;
cout << “f1 * f2=” << f1 * f2 << endl;
cout << “f1 / f2=” << f1 / f2 << endl;
cout << "f1>=f2 ? " << (f1 >= f2);
return 0;
}
- 7.2 设计一个点类,其中包含一对坐标点数据成员、一个求两个点之间距离的友元函 数 dist 和显示坐标点的成员函数,并用数据进行测试。
- //设计一个点类,其中包含一对坐标点数据成员、一个求两个点之间距离的友元函 //数 dist 和显示坐标点的成员函数,并用数据进行测试
- C++编写一个程序,用同一个函数名对n个数据进行从小到大的排序,数据类型可以是整型,单精度实型,双精度实型,用重载函数实现。
- 建立一个Point类,包含数据成员x,y,实现需要的成员函数,并设计main函数完成测试
- 编写设计一个People(人)类。该类的数据成员有年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eatt
- 设计一个学生类,其中包含学号、姓名、成绩等数据成员,创建学生对象并且倒入到文件file.txt,然后由文件读取到另一个学生对象并输出,试编程实现。
- 设计一个点类,其中包含一对坐标点数据成员,一个计算两点距离的友元函数和坐标点的显示函数
- c++设计一个分数类。要求:1.分类包含的分数运算有:连个分数的加、减、乘、除运算。
- 号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函
- 6.需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括lengh (长)、width(宽)、height(高)。要求用成员函数实现以下功能: (1)由键盘分别输入3个长方柱的长、宽、高;
- 【C++】编写一个简单的类。包含构造函数,成员函数等。
- 编写设计一个People(人)类。该类的数据成员有年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eatt
- 设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-
- 需要求3个长方体的体积,写一个基于对象的程序,数据成员包括 length width height 要求用成员函数实现以下功能
- 设计一个工资类(Salary),其中的数据成员有:salary_al代表所有员工工资; 整型值number表示的职工人数。 调用你自己设计好的成员函数完成下面的功能
- c++多态(设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符+,以实现求两个三角形对象的面积之和,进一步实现3个或更多的三角形对象相加的面积之和。)
- 设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
- C++第十周【任务2】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。
- C++11特性--新的类功能--特殊的成员函数(移动构造函数,移动赋值运算符),默认方法和禁用方法(default,delete),委托构造函数,管理虚方法(override,final)