首页 > 其他分享 >每日打卡-11.2

每日打卡-11.2

时间:2023-04-23 20:24:44浏览次数:46  
标签:运算符 zi int 每日 11.2 mu fraction 重载 打卡

一.问题描述

定义一个分数类,包含分子、分母

实验要求:

  1. 含有无参的默认构造函数,并进行构造函数的重载;
  2. 重载分数的加法+、减法-、数乘*这三运算符;
  3. 重载分数的输入和输出运算符;
  4. 重载分数的关系运算符==,!=,>=,<=;

定义约简函数,使分子分母没有公因子。

二.设计思路

三.流程图

四.伪代码 

1

五.代码实现 

#include<iostream>
using namespace std;
class fraction {
private:
	int zi, mu;
public:
	fraction(){}
	fraction(int a, int b) :zi(a), mu(b){}
	~fraction(){}

	void fractionReduction() {
		int big, n = 1;
		big = (zi > mu ? zi : mu);
		for (int i = big; i >= 1; i--) {
			if (zi % i == 0 && mu % i == 0) {
				zi /= i; //分子(前项)
				mu /= i; //分母(后项)
				n *= i; //公约数
			}
		}
	}
	friend istream& operator >> (istream& in, fraction& a) {
		in >> a.zi >> a.mu;
		return in;
	}
	friend ostream& operator <<(ostream& out, fraction& a) {
		out << a.zi << " / " << a.mu;
		return out;
	}

	fraction operator+ (fraction& a) {
		fraction res;
		res.zi = zi * a.mu + a.zi * mu;
		res.mu = mu * a.mu;
		res.fractionReduction();
		return res;
	}
	fraction operator- (fraction& a) {
		fraction res;
		res.zi = zi * a.mu - a.zi * mu;
		res.mu = mu * a.mu;
		res.fractionReduction();
		return res;
	}
	friend fraction operator* (int num, fraction& a) {
		fraction res;
		res.mu = a.mu;
		res.zi = num * a.zi;
		res.fractionReduction();
		return res;
	}

	friend int operator ==(fraction& a, fraction& b) {
		a.fractionReduction();
		b.fractionReduction();
		if (a.zi == b.zi && a.mu == b.mu) return 1;
		else return 0;
	}
	friend int operator !=(fraction& a, fraction& b) {
		a.fractionReduction();
		b.fractionReduction();
		if (a.zi != b.zi && a.mu != b.mu) return 1;
		else return 0;
	}
	friend int operator >=(fraction& a, fraction& b) {
		a.fractionReduction();
		b.fractionReduction();
		if (a.zi >= b.zi && a.mu >= b.mu) return 1;
		else return 0;
	}
	friend int operator <=(fraction& a, fraction& b) {
		a.fractionReduction();
		b.fractionReduction();
		if (a.zi <= b.zi && a.mu <= b.mu) return 1;
		else return 0;
	}
};

int main() {
	fraction a, b, c;
	int s;
	cin >> a >> b;
	cin >> s;
	c = a + b;
	cout << c << endl;
	c = a - b;
	cout << c << endl;
	c = s * b;
	cout << c << endl;
	if (a >= b) {
		cout << "a>=b" << endl;
	}
	if (a <= b) {
		cout << "a<=b" << endl;
	}
	if (a != b) {
		cout << "a!=b" << endl;
	}
	if (a == b) {
		cout << "a=b" << endl;
	}
        return 0;
}

 

标签:运算符,zi,int,每日,11.2,mu,fraction,重载,打卡
From: https://www.cnblogs.com/leapssisbird/p/17347613.html

相关文章

  • 建民の每日打卡12
    一、问题描述某银行月利息如下: 某人手上有2000元,存期20年。计算出收益最高的方案二、流程设计1.通过循环嵌套穷举出所有满足条件的方案,并计算出收益2.比较收益,将收益最大的一组数据输出三、流程图设计四、代码实现#include<iostream>#include<cmath>usingnamespace......
  • 第七天打卡
    一、问题描述假设银行一年整存零取的月利息为0.63%。现在某人手里有一笔钱,他打算在今后的五年中的每年年底去取出1000元,到第五年刚好取完,请算出他存钱应存入多少钱。二、设计思路1.根据题意,从第五年开始倒推前一年的存款,即定义sum储存,得出sum=(sum+1000)/(1+12*0.0063);2.利......
  • 4.23打卡
    一、问题描述: 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在1~N内,有多少个数能满足?二、设计思路:该问题要求输入N值,求解出在1-N的范围内存在......
  • 每天打卡一小时 第十四天 编译四部曲
    第一部曲自然语言找到V的最大值最小值什么是V的最大值 A/B就是V的最大值很好理解将所有最大值找出来其中的最小值便是整体的最大值那么什么是V的最小值  通俗一点就是A差一点就可以被B+1整除(75+1)/4=1919便是最小值找出所有的最小值其中的最大值便是整体的......
  • 打卡第七天
    一、问题描述:应用if语句解决分段函数问题 有一函数功能描述如下,请应用if语句编写算法实现:二、设计思路:接收输入的x值;如果x小于1,则返回y等于x;如果x大于等于1且小于10,则返回y等于2x-1;如果x大于等于10,则返回y等于3x-11;输出计算出的y值。三、程序流程图: ......
  • 编程打卡:给网页做个花里胡哨个格子纹理背景吧。
    编程打卡:给网页做个花里胡哨个格子纹理背景吧。嗯看到Github上面有一个项目,格裙纹理生成器稍微玩了一会儿,感觉这样的纹理或许可以用来做网页的背景,就这样做了。这个项目生成的图片,感觉太精细了,,稍微一个SVG,就有好几MB大,虽然确实惊喜,里面的纹理,用来做裙子什么的说不定真的可以,但......
  • 每日总结2023/4/23
    今天转换思路完成了对于导航到补货站的过程:自己做的始终比不上现有的地图软件,不如跳转到相应的地图软件进行导航。另外在补货历史记录中增加了补货地点一条;更新注册页面。      ......
  • leetcode_打卡11
    leetcode_打卡11题目:392.判断子序列代码:classSolution{publicbooleanisSubsequence(Strings,Stringt){intn=s.length(),m=t.length();inti=0,j=0;while(i<n&&j<m){if(s.charAt(i)==t.c......
  • 打卡第六天
    本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式:输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。输出格式:按照以下格式输出:average=平均成绩max=......
  • 软件工程日报——每日站立会议5
    昨天:我开始整合一下我们组的成果,进行整体框架的修改完善今天:我实现了一种排班,但是还不完善,能够将信息调入到数据库中遇到的问题:不知道如何在前端展示排班信息,前端的日历信息的还不会编写进行排班 排班表数据库信息 ......