资源简介
1.自定义分数类fraction,使用该类可以完成分数的输入、分数的加、减、乘、除二目运算和一目减运算、分数的约分操作、分数的倒数运算、对两个分数进行六种比较运算、以及对分数的输出等操作。
2.将其中使用的普通函数尽量改写成运算符重载函数。如,可重载+、-、*、/、>、>=、<、<=、==、!=,以实现分数的各种运算。并且实现分数与整数的混合运算。
3.尽可能考虑程序的性能。
评分标准
1. 对两个类的成员合理地使用访问权限:1分
2. 实现分数与整数的混合运算:1分
3. 程序结构合理,布局清晰,正确地安排.h和.cpp:2分
4. 考虑程序的性能:1分
这个作业可以用到以下C++知识:
定义类,运算符重载、类型转换。
代码片段和文件信息
/*
* Copyright (c) 2012 Zhejiang University
* All rights reserved.
* file name :fraction.cpp
* version :1.0
* author :Song Yang
* date :2012-12-12
*/
# include
# include
# include
# include “fraction.h“
fraction::fraction(int numer){
this->numerator = numer;
this->denominator = 1;
}
fraction::fraction(int numerint denomin){
this->numerator = numer;
this->denominator = denomin;
}
fraction::fraction(const fraction& other){
numerator = other.numerator;
denominator = other.denominator;
}
fraction& fraction::operator=(const fraction &other){
numerator = other.numerator;
denominator = other.denominator;
return *this;
}
std::string fraction::toString(){
std::string fractionStr;
std::ostringstream os;
os<numerator;
if(this->denominator != 1){
os<<“/“;
os<denominator;
}
return os.str();
}
void fraction::input(){
std::cout<<“input a fraction (e.g. -2/24):“< std::string tmpStr;
std::cin>>tmpStr;
size_t found = tmpStr.find(‘/‘);
std::string tmpNumStrtmpDenomStr;
if(found !=std::string::npos){
tmpNumStr = tmpStr.substr(0found);
tmpDenomStr = tmpStr.substr(found+1);
this->numerator = atoi(tmpNumStr.c_str());
this->denominator = atoi(tmpDenomStr.c_str());
}
else{
this->numerator = atoi(tmpStr.c_str());
this->denominator = 1;
}
std::cout<<“input fraction success:“<toString()< std::cout<<“-----------------------------------------“< }
void fraction::reduce(){
int gcdNum = this->gcd(numeratordenominator);
int tmpNum = numerator / gcdNum;
int tmpDen = denominator / gcdNum;
numerator = tmpNum;
denominator = tmpDen;
}
fraction fraction::opposite(void){
fraction reciprocalFrac(-numerator denominator);
reciprocalFrac.reduce();
return reciprocalFrac;
}
fraction fraction::reciprocal(void){
fraction reciprocalFrac(denominator numerator);
if (numerator < 0)
{
reciprocalFrac.denominator *= -1;
reciprocalFrac.numerator *= -1;
}
reciprocalFrac.reduce();
return reciprocalFrac;
}
fraction fraction::add(const fraction &other){
int tmpNum = numerator*other.denominator + denominator*other.numerator;
int tmpDen = denominator*other.denominator;
fraction sumResult(tmpNumtmpDen);
sumResult.reduce();
return sumResult;
}
fraction fraction::minus(const fraction &other){
int tmpNum = numerator*other.denominator - denominator*other.numerator;
int tmpDen = denominator*other.denominator;
fraction diffResult(tmpNumtmpDen);
diffResult.reduce();
return diffResult;
}
fraction fraction::multiple(const fraction &other){
int tmpNum = numerator*other.numerator;
int tmpDen = denominator*other.denominator;
fraction multipleResult(tmpNumtmpDen);
multipleResult.reduce();
return multipleResult;
}
fraction fraction::divide(const fraction &other){
int tmpNum = numerator*other.denominator;
int tmpDen = denominator*other.numerator;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 81920 2012-12-13 05:28 Fraction\debug\Fraction.exe
文件 439716 2012-12-13 05:28 Fraction\debug\Fraction.ilk
文件 543744 2012-12-13 05:28 Fraction\debug\Fraction.pdb
文件 8906 2012-12-13 05:28 Fraction\Fraction\Debug\BuildLog.htm
文件 403 2012-12-13 05:28 Fraction\Fraction\Debug\Fraction.exe.em
文件 468 2012-12-13 05:28 Fraction\Fraction\Debug\Fraction.exe.em
文件 385 2012-12-13 05:28 Fraction\Fraction\Debug\Fraction.exe.intermediate.manifest
文件 113735 2012-12-13 05:27 Fraction\Fraction\Debug\fraction.obj
文件 65 2012-12-13 05:28 Fraction\Fraction\Debug\mt.dep
文件 94222 2012-12-13 05:28 Fraction\Fraction\Debug\testFraction.obj
文件 224256 2012-12-13 05:28 Fraction\Fraction\Debug\vc80.idb
文件 208896 2012-12-13 05:28 Fraction\Fraction\Debug\vc80.pdb
文件 7021 2012-12-13 04:51 Fraction\Fraction\fraction.cpp
文件 2191 2012-12-13 04:49 Fraction\Fraction\fraction.h
文件 4166 2012-12-13 03:44 Fraction\Fraction\Fraction.vcproj
文件 1423 2012-12-13 05:28 Fraction\Fraction\Fraction.vcproj.laiconglin-PC.laiconglin.user
文件 687 2012-12-13 05:16 Fraction\Fraction\funcUtil.h
文件 4096 2012-12-13 05:28 Fraction\Fraction\testFraction.cpp
文件 1403904 2012-12-13 05:28 Fraction\Fraction.ncb
文件 889 2012-12-12 02:04 Fraction\Fraction.sln
..A..H. 13312 2012-12-13 05:28 Fraction\Fraction.suo
目录 0 2012-12-13 05:28 Fraction\Fraction\Debug
目录 0 2012-12-13 05:28 Fraction\debug
目录 0 2012-12-13 05:28 Fraction\Fraction
目录 0 2012-12-12 03:42 Fraction
----------- --------- ---------- ----- ----
3154405 25
相关资源
- 剑灵辅助源码
- 数字图像处理扑克牌识别程序
- BC45,BC++ 4.5 开发工具
- C++ 数据结构书籍 - 清华大学 - 邓俊辉
- C++AMP.pdf
- C++ Primer 第五版 中文版+英文版 pdf
- Visual C++音频视频处理技术及工程实践
- VC++各版本合集2005-2017
- 数字图像处理与机器视觉——Visual
- QT5.9_c++开发指南——随书[源码]
- C++数据结构原理与经典问题求解源代
- 数据结构与程序设计C++描述(Kruse著)
- 网络调试助手C++源码(VS 2008开发)
- 基于c++的科大讯飞源码
- MFC 官方API文档 MSDN原版
- c++编写的smtp和pop3服务器实现
- C++实现的改进遗传算法
- C++ 日程管理软件 课程设计
- c++可视化学生选课系统
- Microsoft Visual C++ 2005 SP1 Redistributable
- c++ 数据结构 哈夫曼压缩&解压软件 控
- 基于Qt的智能停车场.rar
- 小型公司工资管理系统设计.rar
- 基于TCP协议的C/S传输文件C++)
- C++MFC数据库职工信息管理系统,实现
- C++ Concurrency in Action 2nd Edition (2019.
- Microsoft Visual C++ 2010 SP1 Redistributable
- funcode 黄金矿工 c++语言
- QT实现视音频实时传输qml+C++
- VC++6.0编程实现MIF文件点集读取与凸壳
评论
共有 条评论