首页 > 编程语言 >C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/ 2、逻辑运算==、!=、<、<=、>、>= 6种运输符号。 3、实现输出<<, 输入

C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/ 2、逻辑运算==、!=、<、<=、>、>= 6种运输符号。 3、实现输出<<, 输入

时间:2024-02-05 23:07:25浏览次数:22  
标签:分数 Fraction1 return temp 实现 oss int Fraction operator

题目:实现分数类Fraction

   class Fraction {

    int numerator, denominator;

    public:

    ....


   };

   要求:

1、实现分数的+,-,*,/

2、逻辑运算==、!=、<、<=、>、>= 6种运输符号。

3、实现输出<<, 输入  >> 操作符重载。

   样例1输入:

    1 2

    3 4

   样例1输出:

    a= 1/2, b = 3/4

    1/2 + 3/4 = 5/4

    1/2 - 3/4 = -1/4

    1/2 * 3/4 = 3/8

    1/2 / 3/4 = 2/3

    a == b is 0

    a != b is 1

    a <= b is 1

    a >= b is 0

    a < b is 1

    a > b is 0

    c == d is 1

   样例2输入:

    2 4

    3 4

   样例2输出:

    a= 1/2, b = 3/4

    1/2 + 3/4 = 5/4

    1/2 - 3/4 = -1/4

    1/2 * 3/4 = 3/8

    1/2 / 3/4 = 2/3

    a == b is 0

    a != b is 1

    a <= b is 1

    a >= b is 0

    a < b is 1

    a > b is 0

    c == d is 1

代码如下:

#include <iostream>
#include <cmath>

using namespace std;

class Fraction {
	private:
		int n;
		int d;

	public:
		Fraction(int c_n = 0, int c_d = 0) {
			n = c_n;
			d = c_d;
			this->simplify();
		}

		void simplify() {
			int temp = abs(n);
			while (temp > 1) {
				if (n % temp == 0 && d % temp == 0) {
					n /= temp;
					d /= temp;
				}
				temp--;
			}
			if (n * d >= 0) {
				n = abs(n);
				d = abs(d);
			} else {
				n = -abs(n);
				d = abs(d);
			}
		}

		friend istream& operator>> (istream& in, Fraction& f);

		friend ostream& operator<< (ostream& out, const Fraction& f);

		Fraction operator+ (const Fraction &f);

		Fraction operator- (const Fraction &f);

		Fraction operator* (const Fraction &f);

		Fraction operator/ (const Fraction &f);
		
		int operator== (const Fraction &f);
		
		int operator!= (const Fraction &f);
		
		int operator<= (const Fraction &f);
		
		int operator>= (const Fraction &f);
		
		int operator< (const Fraction &f);
		
		int operator> (const Fraction &f);
};

istream& operator>> (istream& in, Fraction& f) {
	in >> f.n >> f.d;
	f.simplify();
	return in;
}

ostream& operator<< (ostream& out, const Fraction& f) {
	out << f.n << "/" << f.d;
	return out;
}

Fraction Fraction::operator+ (const Fraction &f) {
	Fraction t((n * f.d + d * f.n), (d * f.d));
	t.simplify();
	return t;
}

Fraction Fraction::operator- (const Fraction &f) {
	Fraction t((n * f.d - d * f.n), (d * f.d));
	t.simplify();
	return t;
}

Fraction Fraction::operator* (const Fraction &f) {
	Fraction t((n * f.n), (d * f.d));
	t.simplify();
	return t;
}

Fraction Fraction::operator/ (const Fraction &f) {
	Fraction t((n * f.d), (d * f.n));
	t.simplify();
	return t;


int Fraction::operator== (const Fraction &f) {
	if(n == f.n && d == f.d) {
		return 1;
	} else {
		return 0;
	}
}

int Fraction::operator!= (const Fraction &f) {
	if(n == f.n && d == f.d) {
		return 0;
	} else {
		return 1;
	}
}

int Fraction::operator>= (const Fraction &f) {
	if(n * f.d >= d * f.n) {
		return 1;
	} else {
		return 0;
	}
}

int Fraction::operator<= (const Fraction &f) {
	if(n * f.d <= d * f.n) {
		return 1;
	} else {
		return 0;
	}
}

int Fraction::operator> (const Fraction &f) {
	if(n * f.d > d * f.n) {
		return 1;
	} else {
		return 0;
	}
}

int Fraction::operator< (const Fraction &f) {
	if(n * f.d < d * f.n) {
		return 1;
	} else {
		return 0;
	}
}

int main(int argc, char *argv[]) {

	Fraction a(1),b(1,3),c(-3,9),d(2,-6);

	cin >> a >> b;

	cout << "a= " << a << ", b = " << b << endl;

	cout << a << " + " << b << " = " << a + b << endl;
	cout << a << " - " << b << " = " << a - b << endl;
	cout << a << " * " << b << " = " << a * b << endl;
	cout << a << " / " << b << " = " << a / b << endl;

	cout << "a == b is " << (a == b) << endl;
	cout << "a != b is " << (a != b) << endl;
	cout << "a <= b is " << (a <= b) << endl;
	cout << "a >= b is " << (a >= b) << endl;
	cout << "a < b is " << (a < b) << endl;
	cout << "a > b is " << (a > b) << endl;
	cout << "c == d is " << (c == d) << endl;

	return 1;
}

运行结果:

C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/  2、逻辑运算==、!=、<、<=、>、>= 6种运输符号。   3、实现输出<<, 输入  >> 操作符重载。_ios

C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/  2、逻辑运算==、!=、<、<=、>、>= 6种运输符号。   3、实现输出<<, 输入  >> 操作符重载。_操作符重载_02


C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/  2、逻辑运算==、!=、<、<=、>、>= 6种运输符号。   3、实现输出<<, 输入  >> 操作符重载。_分数类_03

标签:分数,Fraction1,return,temp,实现,oss,int,Fraction,operator
From: https://blog.51cto.com/u_16532251/9612567

相关文章

  • 统信UOS/麒麟KYLINOS与Windows通过Open SSH实现文件传输
    原文链接:统信UOS/麒麟KYLINOS与Windows通过OpenSSH实现文件传输hello,大家好啊!今天我要给大家介绍的是在统信UOS或麒麟KYLINOS操作系统与Windows系统之间通过OpenSSH实现文件传输的方法。在日常工作中,我们经常需要在不同操作系统之间传输文件。虽然可以使用SMB文件共享等方法,但今......
  • 什么是Vue样式穿透以及常用的实现方法
    在Web前端开发中,样式穿透是一个重要的主题,它可以帮助我们更好地定制化组件样式,提升用户体验。本文将为您介绍Vue中样式穿透的概念,以及几种常用的实现方法,希望对您的前端开发工作有所帮助。什么是样式穿透?样式穿透是一种在Vue组件中使用父组件的样式来渲染子组件的技术。在Vue中,子组......
  • 如何在春节实现弯道超车,你知道吗?
    春节将至,大家在享受假期的同时,不要忘记假期之后就是金三银四了哦。如何在春节期间实现弯道超车?在面试之前做足准备,你有计划了么?这个春节假期不要再乱学了,现在送你一份「测试开发+人工智能精品课礼包」,跟着我们的节奏来。学习虽然没有捷径,但是有路径。这套课程是霍格沃兹测试开发学......
  • css实现 背景重复线条 实现盒子四个角发光效果 实现内阴影加边框发光效果
     背景重复线条 width:100%;height:100%;//background-color:rgba(51,73,102,1);background-image:linear-gradient(toleft,#3349660.02rem,transparent0.01rem);background-repeat......
  • vue2中el-tree组件实现右键菜单功能
    目标右键点击树组件中的节点,弹出增删改的菜单,要求菜单总是在点击位置的附近先添加一个树<template><div><el-tree<!--绑定数据-->:data="tree"highlight-currentnode-key="id":props=&quo......
  • SRS实现网页和手机端简单直播
    一.SRS简介SRS官方网站:https://github.com/ossrs/srs/wiki/v3_CN_Home,https://ossrs.net/lts/zh-cn/SRS是一个开源的(MIT协议)简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等协议。SRS媒体服务器和FFmpeg、OBS、VLC、 WebRTC等客户端配合......
  • 淘宝/天猫商品详情API:返回值参数详解及商业逻辑实现
    在电子商务的高速发展过程中,API接口扮演了至关重要的角色。对于淘宝和天猫这样的大型电商平台,商品详情API是商家与消费者信息沟通的桥梁。本文将深入探讨这一API的返回值参数,并展示如何通过编程利用这些数据实现商业逻辑。一、商品详情API的核心作用商品详情页是电商体验中的重要环......
  • 如何实现一个延迟队列?
    延迟队列是我们日常开发过程中,经常接触并需要使用到的一种技术方案。前些时间在开发业务需求时,我也遇到了一个需要使用到延迟消息队列的需求场景,因此我也在网上调研了一系列不同的延迟队列的实现方案,在此进行了一个总结并且给大家进行分享。延迟队列定义首先,队列这种数据结构相信大......
  • 怎么用ETL工具实现MQ消息同步
    怎么用ETL工具实现MQ消息同步随着企业业务的不断扩张和数据量的不断增加,消息队列(MQ)已经成为了很多企业进行异步消息传递和数据同步的首选方案。而在一些特定场景下,需要将MQ中的消息同步到数据仓库或其他存储系统中,以便进行更深入的数据分析和挖掘。这时候,ETL工具可以成为实现MQ消息......
  • 怎么用ETL工具实现MQ消息同步
    怎么用ETL工具实现MQ消息同步随着企业业务的不断扩张和数据量的不断增加,消息队列(MQ)已经成为了很多企业进行异步消息传递和数据同步的首选方案。而在一些特定场景下,需要将MQ中的消息同步到数据仓库或其他存储系统中,以便进行更深入的数据分析和挖掘。这时候,ETL工具可以成为实现MQ消......