综合性实验 - 1

2019-08-01 23:10

综合性实验_1:分数类的创建与应用

实验类型:综合性实验 实验学时:2学时

涉及的知识点:类的定义、对象的建立与使用、构造函数、类的友元与运算符重载、输入输出流等

1、实验目的

综合应用类与对象、类的友元与运算符重载、输入输出流等知识,创建分数类,重载常用的运算符,进行输入输出、四则运算和比较大小操作。

分数是我们小学学习的内容,在计算机中如果用浮点数来表示,则可能存在误差,为此,可以定义一个分数类来精确表示。要求定义的分数类Fraction能方便进行输入输出,准确地进行四则运算(+、-、*、/)和关系运算(==、!=、>=、<、<=、>)。实验目的如下:

(1)掌握类的定义方法,包括类的成员声明、构造函数、条件编译指令的使用、类的声明与实现分离的方法等;

(2)掌握使用成员函数、友元函数两种方法重载四则运算符、关系运算符和插入运算符(<<)及提取运算符(>>);

(3)掌握对象的创建,并能调用成员函数实现对应功能。

2、实验内容

先定义分数类Fraction,并重载了四则运算符、关系运算符和插入、提取运算符;再在main()函数定义一些对象进行相关运算,加以验证,从而认识“分数类”优势,学会根据实际需要定义数据类型,提高学习面向对象编程技术的自觉性。

3、实验器材设备

安装了WindowsXP(或其他版本的Windows操作系统)和VS2010(或以上版本的Visusl Studio版本)的PC机一台。

4.实验要求

根据给出的实验指导书完成程序部分代码的填写、调试工作。掌握实验指导书中程序的结构,理解其中的关键代码,回答相关问题。 运行效果图:

5、实验步骤

(1)新建一个项目:VC++/win32 控制台程序,创建一个C++项目;

(2)分别创建一个头文件fraction.h和两个C++源文件fraction.cpp、main.cpp,再将对应内容拷贝到相应文件中:

//fraction.h内容 #include using namespace std;

#ifndef __FRACTION_H__ #define __FRACTION_H__

class Fraction { private:

intnum; int den;

//分子 //分母

//标准化分数(即保证分母为正,分子可正可负) //得到m、n的最大公约数

//分数类

void standardize(); intgcd(int m, int n);

public:

代码行1 ;//带2个参数的构造函数,分别给分子、分母赋值,默认值分别为0、1 void simplify();

//分数化简

void print();

//用成员函数重载+、-、*、/ 四则运算符的声明 Fraction operator +(Fraction & f);

/* 代码段1 */

//用友元函数重载==、>=、<=、!、<、>关系运算符的声明 friend int operator ==(Fraction & f1,Fraction & f2); friend int operator !=(Fraction & f1,Fraction & f2);

/* 代码段2 */

//重载<<、>>运算符 代码行2; 代码行3;

}; #endif

//fraction.cpp内容

#include #include #include %using namespace std;

//成员函数的类外定义 Fraction::Fraction(intn,int d) {

num=n; den=d; if (d==0) {

cout<<\分母不能为\exit(1);

}

}

standardize(); simplify();

//先标准化 //再化简

void Fraction::print()//输出分数 { }

void Fraction::standardize()//标准化,确保分母为正,分子可正可负 { }

int Fraction::gcd(int m, int n) {

m=(m>=0 ? m:-m); n=(n>=0 ? n:-n); int r=m % n;

/* 代码段3 */

}

void Fraction::simplify() {

//分数化简

//取正数 //取正数

//辗转相除法求最大公约数

if (den<0) { }

num=-num; den=-den;

//分子、分母同乘于-1

if (num==0 || den==1) else

cout<

int r=代码行4; }

Fraction Fraction::operator +(Fraction & f) {

intn,d;

//公式:num/den + f.num/f.den =(num*f.den+den*f.num)/(den*f.den)

/* 代码段4 */

}

Fraction Fraction::operator -(Fraction & f) {

intn,d;

//公式:num/den - f.num/f.den =(num*f.den-den*f.num)/(den*f.den)

/* 代码段5 */

}

Fraction Fraction::operator *(Fraction & f) { }

Fraction Fraction::operator /(Fraction & f) {

intn,d;

//公式:num/den * f.num/f.den =(num*f.num)/(den*f.den) n=num*f.num; d=den*f.den; return Fraction(n,d); num=num/r; den=den/r;


综合性实验 - 1.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:司法行政系统信息化建设的思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: