《第九周任务三》定义分数类中《和》运算符重载,实现分数的输入输出,改造源程序中对运算结果显示方式,使程序读起来更自然

定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。 问题及代码: /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:李磊涛 *完成时间:2016年5月28日 *版 本 号:v1.0 * *问题描述:定义分数类中>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。 *输入描述:无。 *程序输出:分数的各种形式。 阅读详情
/*
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:定义分数类中《和》运算符重载,实现分数的输入输出,改造源程序中对运算结果显示方式,使程序读起来更自然
* 作    者:  张启立                           
* 完成日期:  2012年 4 月 16 日
* 版 本 号: 9-3-1        
 
* 对任务及求解方法的描述部分
* 代码实现
#include<iostream>

using namespace std;

class CFraction
{
private:
	int nume;  // 分子
	int deno;  // 分母
	int gcd(int nu, int de);
public:
	//构造函数及运算符重载的函数声明
	CFraction(int nu = 0, int de = 1):nume(nu), deno(de){}; //构造函数,初始化用 

	friend CFraction operator + (CFraction &c1,CFraction &c2);
    friend CFraction operator - (CFraction &c1,CFraction &c2);
	friend CFraction operator * (CFraction &c1,CFraction &c2);
	friend CFraction operator / (CFraction &c1,CFraction &c2);
    friend CFraction operator - (CFraction &c);

	bool operator > (CFraction &t);
	bool operator < (CFraction &t);
	bool operator >= (CFraction &t);
	bool operator <= (CFraction &t);
	bool operator == (CFraction &t);
	bool operator != (CFraction &t);

	void Simplify();   //化简函数(使分子分母没有公因子)
	friend ostream& operator << (ostream&,CFraction&);
	friend istream& operator >> (istream&,CFraction&);
	
};
//重载函数的实现及用于测试的main()函数
ostream& operator << (ostream&output,CFraction&f)
{
    output << f.nume << "/" << f.deno;

	return output;
}

istream& operator >> (istream&input,CFraction&f)
{
	char c;
	do
	{
	input >> f.nume >> c >> f.deno;
	}while(c != '/');

	return input;
}
void CFraction::Simplify() //化简函数(使分子分母没有公因子)
{  
	int n ;

	if(nume < 0  && deno > 0)
	{
		n = gcd(-nume, deno);
	}
	else if(nume > 0  && deno > 0)
	{
		n = gcd(nume, deno);
	}
	else if(nume > 0  && deno < 0)
	{
		n = gcd(nume, -deno);
	}
	else if(nume < 0  && deno < 0)
	{
		n = -gcd(-nume, -deno);
	}
	nume = nume / n;  

	deno = deno / n; 

}  


int CFraction::gcd(int nu, int de)    //辗转相除法,求最大公约数  
{    
	int t, r, a, b;   

	a = nu;  

	b = de;  

	if (a < b)     
	{    
		t = a;    
		a = b;                                     
		b = t;    
	}     
	while (b != 0)    
	{    
		r = a % b;    
		a = b;    
		b = r;    
	}    
	return a;    
}


CFraction operator + (CFraction &c1,CFraction &c2)
{
	CFraction c;//先通分,再相加

	c.nume = c1.nume * c2.deno + c2.nume * c1.deno;

	c.deno = c1.deno * c2.deno;

	return c;
}

CFraction operator - (CFraction &c1,CFraction &c2)
{
	CFraction c;//先通分,再相减

	c.nume = c1.nume * c2.deno - c2.nume * c1.deno;

	c.deno = c1.deno * c2.deno;

	return c;
}

CFraction operator * (CFraction &c1,CFraction &c2)
{
	CFraction c;//分子分母分别相乘

	c.nume = c1.nume * c2.nume;

	c.deno = c1.deno * c2.deno;

	return c;
}

CFraction operator / (CFraction &c1,CFraction &c2)
{
	CFraction c;//相除即乘以倒数

	c.nume = c1.nume * c2.deno;

	c.deno = c1.deno * c2.nume;

	return c;
}

CFraction operator - (CFraction &c)
{
	c.nume = 0 - c.nume;
	
	return c;
	
}

bool CFraction::operator > (CFraction &t)
{
	if(nume * t.deno > t.nume * deno)//先通分,在比较
	{
		return true;
	}
	else
	{
		return false;
	}
}

bool CFraction::operator < (CFraction &t)
{
	if(nume * t.deno < t.nume * deno)//先通分,在比较
	{
		return true;
	}
	else
	{
		return false;
	}
}
bool CFraction::operator >= (CFraction &t)
{
	if(nume * t.deno >= t.nume * deno)//先通分,在比较
	{
		return true;
	}
	else
	{
		return false;
	}
}
bool CFraction::operator <= (CFraction &t)
{
	if(nume * t.deno <= t.nume * deno)//先通分,在比较
	{
		return true;
	}
	else
	{
		return false;
	}
}
bool CFraction::operator == (CFraction &t)
{
	if(nume * t.deno == t.nume * deno)//先通分,在比较
	{
		return true;
	}
	else
	{
		return false;
	}
}
bool CFraction::operator != (CFraction &t)
{
	if(nume * t.deno != t.nume * deno)//先通分,在比较
	{
		return true;
	}
	else
	{
		return false;
	}
}

void main()
{
	CFraction c1, c2, c;

	cout << "请输入你要输入的分数:(例:3/7)" <<endl;

	cin >> c1 >>c2 ;

	c1.Simplify();

	cout << "c1 =" << c1 << endl;

	c2.Simplify();

	cout << "c2 =" << c2 << endl;

	c = c1 + c2;

	c.Simplify();

	cout << "c1 + c2 =" << c <<endl;

	c = c1 - c2;

	c.Simplify();

	cout << "c1 - c2 =" << c <<endl;

	c = c1 * c2;

	c.Simplify();

	cout << "c1 * c2 =" << c <<endl;

	c = c1 / c2;

	c.Simplify();

	cout << "c1 / c2 =" << c << endl;

	c = - c1;

	cout << "-c1 =" << c << endl;

	if(c1 > c2)
	{
		cout << "c1 > c2" << endl;
	}
	if(c1 < c2)
	{
		cout << "c1 < c2" << endl;
	}
	if(c1 >= c2)
	{
		cout << "c1 ≥ c2" << endl;
	}
	if(c1 <= c2)
	{
		cout << "c1 ≤ c2" << endl;
	}
	if(c1 == c2)
	{
		cout << "c1 = c2" << endl;
	}
	if(c1 != c2)
	{
		cout << "c1 ≠ c2" << endl;
	}
	system("pause");
}

移动端开发08 移动端真机调试 移动端开发08 移动端真机调试+抓包 阅读详情

相关推荐

鸿蒙开发App 如何通过抓包查看 http 网络请求?

鸿蒙开发中如何抓包查看网络请求

zmx781284440的博客 1515

C++第九周【任务三】定义分数类中<<和>>运算符重载,实现分数的输入输出

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:C++第九周【任务三】 * 作 者: 李洪悬 * 完成日期: 2012 年

天道酬勤,人定胜天! 1107

移动端Web开发全攻略:从适配原理到性能优化实战

响应式网页设计(RWD)是现代前端开发的核心技术之一,其核心原理在于通过CSS媒体查询、弹性布局和视口单位,使网页能够根据设备屏幕尺寸、分辨率和方向自动调整布局与样式。这项技术的价值在于解决了多终端设备访问的统一体验问题,极大地提升了开发效率和用户体验。在移动互联网时代,其应用场景已从简单的页面适配,扩展到需要处理触摸交互、网络性能优化、安全区域适配等复杂移动端特性的Web应用开发。本文聚焦于移动端Web开发,深入探讨了视口配置、REM与VW适配方案、点击延迟处理以及基于Web Vitals的性能监控等关键

weixin_34195142的博客 432

学生成绩的输入和输出(运算符重载)

现在需要输入一组学生的姓名和成绩,然后输出这些学生的姓名和等级。 输入时,首先要输入学生数(正整数)N。接着输入N组学生成绩,每组成绩包括两项:第一项是学生姓名,第二项是学生的成绩(整数)。 输出时,依次输出各个学生的序号(从1开始顺序编号),学生姓名,成绩等级(不小于60为PASS,否则为FAIL) 函数接口定义: 面向Student类对象的流插入和流提取运算符 裁判测试程序样例: #inclu...

weixin_43817532的博客 4871

小白初学笔记--vue

Vue学习笔记----Vue Cli的使用(二) 1. 使用CLI创建vue项目 执行create命令创建vue项目 vue create hello_vue

weixin_44427407的博客 1530

Hermes Studio App开发50%:移动端与服务端集成的技术解读

移动应用开发的核心不仅在于界面实现,更在于如何将复杂的服务端管理能力高效地延伸到移动端。对于服务端管理工具而言,App化的关键在于处理实时状态查询、安全认证、数据同步与轻量化操作等基础问题。本文从移动端与服务端集成的通用技术原理出发,探讨了服务端管理类App在开发中期(约50%进度)时的架构决策、技术选型与工程实践,包括跨平台框架(如Flutter)的应用、API鉴权设计与安全边界构建、断线重连与离线缓存策略等。结合Hermes Studio App的当前进展,本文为开发者提供了一套可落地的移动端接入方案和

weixin_33885676的博客 290

输入和输出运算符重载

输入和输出运算符重载 重载输出运算符 &lt;&lt; 通常情况下,输出运算符的第一个形参是一个非常量 ostream 对象的引用。之所以 ostream 是非常量是因为向流写入内容会改变其状态;而该形参是引用是因为我们无法直接复制一个 ostream 对象。 第二个形参一般来说是一个常量的引用,该常量是我们想要打印的类类型。 为了与其他输出运算符保持一致,poerat...

Zhoujy1996的博客 1951

Vue 3 移动应用开发实战:基于 Capacitor 的混合应用构建指南

混合应用开发结合了Web技术的快速迭代与原生应用的设备访问能力,通过WebView容器和JavaScript桥接技术,实现了跨平台部署。其核心价值在于允许开发者使用熟悉的前端框架(如Vue.js)构建应用,同时通过原生插件调用摄像头、文件系统等硬件功能,大幅提升开发效率并扩展应用边界。在移动端开发领域,Vue 3凭借其组合式API和出色的TypeScript支持,成为构建现代Web应用的热门选择。而Capacitor作为官方推荐的混合应用运行时,提供了与Vue 3和Vite工具链的无缝集成,使得开发者能够轻

weixin_34293246的博客 293

HBuilderX中联调移动端页面:项目应用方案

通过HBuilderX实现高效移动端页面联调,提升开发效率。结合实际项目场景,详解HBuilderX的调试功能与移动设备连接技巧,让前端开发更流畅。

weixin_42601702的博客 414

Unity开发Pico VR视角移动:5大核心问题与解决方案详解

在虚拟现实(VR)应用开发中,实现稳定、自然的视角移动是构建沉浸式体验的基础。其核心原理在于精确同步现实物理空间、设备传感器数据与虚拟世界坐标系,确保低延迟与高精度追踪。这一技术对于提升用户体验、防止晕动症至关重要,尤其在教育、仿真和游戏等场景中。通过合理配置追踪原点模式、统一移动坐标系、处理物理碰撞、优化渲染性能以及规范打包流程,开发者能够有效解决视角漂移、朝向错乱和穿模等常见问题。本文聚焦Pico VR开发,深入解析了六自由度(6DoF)追踪与Unity引擎的集成实践,为构建流畅的VR应用提供系统化指导

weixin_30312563的博客 429

Charles 4.X HTTPS 抓包实战:3步配置解决 iOS/Android 证书信任与 unknown 错误

本文详细介绍了使用Charles 4.X进行HTTPS抓包的实战配置,重点解决iOS和Android设备上的证书信任与unknown错误问题。通过3步核心配置,包括基础代理设置、SSL代理启用及根证书安装,帮助开发者高效完成移动端网络调试。文章还提供了针对不同平台的证书安装方法和高级调试技巧,确保HTTPS流量捕获的准确性和安全性。

weixin_28831399的博客 297

MATLAB Mobile快照功能:移动计算与桌面工作流无缝衔接

在移动计算与云端协作日益普及的背景下,数据科学和工程计算的工作流正经历深刻变革。MATLAB作为科学计算的核心平台,其移动端应用通过创新的状态持久化与序列化机制,实现了代码、图形和计算环境的完整封装。这一技术不仅解决了跨设备工作连续性难题,更通过标准化文件格式与云服务深度集成,为实时监控、野外数据探查和教育互动等场景提供了轻量级解决方案。其中,Snapshot Preview功能作为关键枢纽,将移动端的便捷灵感捕捉与桌面端的强大算力无缝连接,配合MATLAB Drive和GitHub的自动同步,构建了从灵感

weixin_34389926的博客 416

解决ubuntu22.04虚拟机环境下无法连接本机摄像机的问题

VMware 搭载ubuntu22.04系统下,通过"虚拟机"->"可移动设备"->连接电脑自带的摄像头,遇到了报错USB设备"Realtek Integrated_Webcam_HD"的连接失败。3、在服务列表中选中”VMware USB Arbitration Service”,双击打开属性对话框,再选择”启动”,就能启动VMware USB Arbitration Service服务了。4、查看效果,通过"虚拟机"->"可移动设备",这时可以看到已经连接上电脑自带的摄像机了。

lnniyunlong99的专栏 5849

Advancedinstaller安装包自定义操作打开文件

Advancedinstaller安装包自定义操作打开文件说点牢骚走过的坑第二个坑合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 说点牢骚 先说一下我的项目需求,简单来说就是需要在程序安装结束或者过程中,调用我安装包里面的两个安装文件。这个

Larry_Yanan的博客 2575

Trae Solo移动端SOLO开发实战:48小时跑通真机验证流

移动端开发本质是端到端的用户交互验证,其核心在于网络可达性、真机环境适配与轻量闭环验证。随着个体开发者工作流兴起,本地化AI编程环境如Trae正成为快速构建可演示原型的关键工具。本文聚焦‘SOLO模式’这一典型场景,解析如何绕过传统全栈依赖,通过局域网服务暴露、Mock接口驱动、DPR响应式字体、微信调试代理等关键技术,实现扫码登录→状态管理→页面跳转→数据渲染的完整链路。内容覆盖iOS/Android真机联调、Taro多端一致性、H5体积压缩等高频工程痛点,为独立开发者提供可复用的移动端最小可行验证方案。

weixin_30598225的博客 475

使用Unity进行Android游戏开发

作者:周可辰          Unity是一个跨平台的游戏开发环境,使用C#或JS作为开发语言,用Unity开发的游戏只要点击一个按钮,就能轻松地发布PC、IOS或Android,甚至FLASH、Xbox,PS3、Wii,Web等平台的版本。不过每一个模块是要单独收费的。   Unity对Android有强大的兼容性:连最新上市的Android设备都能支持,包括Tegra平板和索尼

移动平台应用软件开发技术 1万+

古龙精灵Lua脚本开发入门:零基础移动端自动化实战指南

在移动应用与游戏日益复杂的今天,界面自动化成为提升效率的关键手段。它通过脚本模拟用户点击、滑动等操作,将重复性工作转化为可执行程序。Lua作为一种轻量级嵌入式脚本语言,凭借简洁语法与高效性能,成为自动化脚本开发的首选语言之一。理解其变量、表、函数与字符串处理等核心概念,是构建稳定脚本的基础。界面自动化的价值在于:降低人工成本、提升测试覆盖率、实现无人值守运行。其应用场景覆盖App回归测试、RPA流程自动化、设备批量操作等。古龙精灵正是基于Lua的移动端自动化开发工具,提供找色、找图、触控模拟等能力,适合零基

weixin_33766805的博客 447

山东大学FPGA课程实验一 加法器设计

电子设计自动化与FPGA设计,实验一 加法器设计

2503_91283667的博客 869
上一篇: 第九周 任务2 定义TIME类中的《和》运算重载,实现分数的输入输出。
下一篇: 第九周任务五
dizzy12
博客等级 码龄15年 2粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值