`
bulote
  • 浏览: 1353876 次
文章分类
社区版块
存档分类
最新评论

实训C++语言设计——Rational有理数的运算实现

 
阅读更多

平台:VC++ 2005 测试通过!
.vcproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件。
它包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 twod.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
这些都是使用应用程序向导生成的 VC++ 文件故不列出
我只列出程序主要部分!

#include <iostream>
using namespace std;

class CRational{
public:
CRational(int n = 0) : _numerator(n), _denominator(1){}
CRational(int i, int j) : _numerator(i), _denominator(j){}

//下面的构造函数也充当type coversion,
//从double到CRational例如3.5转化为35/10
CRational(double r) :
_numerator(r * BIG), _denominator(BIG){}

//此处用 operator 类型() 定义一个type coversion:
//从CRational到double
//此类型转换函数为我们在程序中使用CRational
//的变量带来很多便利,在很多情况下编译器
//将自动调用此函数将CRational类型的变量
//通过此函数转换为double
operator double(){
return static_cast<double>(_numerator)/_denominator;
}

void print() const {
cout << _numerator << "/" << _denominator;
}
private:
long _numerator, _denominator;
enum {BIG = 100};
};

// RationalPro.cpp : 定义控制台应用程序的入口点。
/*本例给出了设计者为自己的类型设计
类型转换函数的实例.
(1). 可通过类型的构造函数提供类型转换,如本例中的
CRational(double r),可将double类型变量转换为CRational
(2). 定义类型转换函数,如本例中,operator double()
该函数可在程序中"显示地",或"隐式地"被调用,实现
从CRational到double的转换.
*/

#include "stdafx.h"
#include "CRational.h"

/*以下定义三个同名的greater函数,这就是函数重载*/
int greater(int i, int j) { return ( i > j ? i : j); }
double greater(double x, double y) { return ( x > y ? x : y); }
//为什么在此处没有overloading >,可以吗?
//注意此函数的执行过程
CRational greater(CRational w, CRational z) {
return ( w > z ? w : z);
}


int _tmain(int argc, _TCHAR* argv[])
{
int i = 10, j = 5; float x = 7.0; double y = 14.5;
CRational w(10), z(3.54);
//下面的y + z,不是基于操作符重载,而是基于
//类型转换来实现y + z的合法
cout << y + z;

cout << "/ngreater(" << i << ", " << j << ") = "
<< greater(i, j);
cout << "/ngreater(" << x << ", " << y << ") = "
<< greater(x, y);

cout << "/ngreater(" << i << ", " ; z.print(); cout << ") = "
//下面显示地调用从double到rational的conversion
<< greater(static_cast<CRational>(i), z);

//下面隐式地调用从rational到double的conversion
cout << "/ngreater("; w.print(); cout << ", "; z.print(); cout << ") = ";
greater(w, z).print();

return 0;
}

分享到:
评论

相关推荐

    有理数运算 C++ 设计报告

    在本项目中,我们设计了一个名为`Rational`的有理数类,该类用于表示和操作有理数。有理数是由两个整数(分子和分母)组成,可以进行基本的算术运算,如加法、减法、乘法和除法。下面将详细解释实现这个类的关键知识...

    有理数运算【抽象数据类型】

    有理数运算在计算机科学中是一个基础且重要的概念,特别是在抽象数据类型(Abstract Data Type, ADT)的设计和实现中。有理数是由两个整数(分子和分母)表示的分数,通常写为分子除以分母的形式,如3/4。在编程中,...

    程序设计语言-有理数运算程序.pdf

    在程序设计中,有理数运算程序是一种常见的实践任务,主要目标是实现对有理数的各类算术操作。有理数是数学中一个重要的概念,它可以表示为两个整数的比,即分数形式。在C++编程语言中,由于没有预定义的有理数类型...

    C++课程设计分数类的设计与实现(有理数运算).docx

    在C++编程中,课程设计任务“分数类的设计与实现”是一个常见的练习,旨在让学生掌握面向对象编程的基本概念,特别是类的设计和对象的封装。在这个项目中,目标是创建一个名为`RationalNumber`的类,它能表示并处理...

    有理数运算c++ (2).docx

    在C++编程语言中,设计一个有理数运算系统涉及到数据结构、类的定义、运算符重载以及算法的应用。本项目旨在让学生掌握面向对象编程的核心概念,通过创建有理数类来处理数学中的分数运算。 1. **设计思想** - ...

    求解有理数分式方程c++课设.doc

    这些运算符需要根据有理数的运算规则进行实现。 另外,需要设计 Rational 类的比较运算符重载,例如等于、不等于、大于、小于等。这些运算符需要根据有理数的比较规则进行实现。 此外,需要设计 Rational 类的输入...

    有理数四则运算设计性试验报告

    本次实验旨在通过设计和实现一个有理数的抽象数据类型(ADT),来巩固和深化对数据结构的理解,并熟练掌握C++编程技巧。实验要求学生具备良好的算法设计能力和编程实践能力,同时能够运用所学知识解决实际问题。 1....

    有理数的Rational类

    描述有理数的Rational类如下,请补充类的其他成员使其能够执行各种运算。  Class Rational  {  long numerator ; // 分子  long denominator ; // 分母  ........  };  1)重载算术运算符“+”、“-”、“*...

    C++简单计算器的实现

    在本项目中,"C++简单计算器的实现"是一个典型的编程练习,旨在帮助初学者掌握C++的基础知识,特别是函数重载和有理数运算。下面我们将深入探讨这个主题,以便更好地理解其背后的原理和实践。 首先,让我们讨论C++...

    C++课程设计报告--小型特殊计算器

    在本次C++课程设计中,学生张建文致力于构建一个小型特殊计算器,该计算器能够处理复数、有理数、矩阵和集合的特殊计算,以此来巩固和应用面向对象编程的基本概念和C++语言技能。以下是设计的关键点和实现技术的详细...

    C++ 有理数类程序代码

    在C++编程语言中,设计一个有理数类(Rational Number Class)是常见的实践,目的是为了方便地处理分数,并支持基本的算术运算。在这个“C++有理数类程序代码”中,我们可能会看到如何通过重载运算符来实现分数的...

    c++关于有理数类的课程设计.docx

    在这个案例中,我们需要设计一个有理数类(Rational Number Class),用于表示和操作有理数。有理数是可以表示为两个整数比例的数,如2/3、533/920和-12/49。C++标准库并未提供内置的有理数类型,因此我们需要自己...

    c++关于有理数类的课程设计.pdf

    在这个课程设计中,我们关注的是在C++中如何实现有理数类,以及如何使用重载运算符来处理有理数的算术运算。有理数是可以表示为两个整数比的数,比如2/3,533/920和-12/49。无理数则是不能表示为这种形式的数,如π...

    有理数加减乘除

    在编程领域,尤其是在C++语言中,实现有理数(也称为分数)的加减乘除操作是一项基础但重要的任务。有理数是两个整数的比,通常表示为分子和分母,如3/4或5/2。在本文中,我们将深入探讨如何在C++中创建一个有理数类...

    有理分数的四则算术运算符重载 .cpp

    (有理数)创建一个名为 Rational 的类,用于对分数进行算术运算。编写一个程序来测试你的类。使用整数变量来表示类的私有实例变量——分子和分母。 提供一个构造函数,使该类的对象能够在声明时进行初始化。构造...

    高级语言程序设计复习.zip

    1. **Rational0414.cpp**:这可能是一个关于C++中的有理数类(Rational Number Class)实现的源代码文件,展示了如何通过自定义数据结构来处理数学中的分数运算。 2. **C13A试卷-中文.doc** 和 **C14A试卷-中文.doc...

    C++(II)练习题doc[精选].pdf

    其中包含一个有理数类(Rational)的实现,并要求实现该类的加法运算和其他功能。以下是详细知识点: 1. 类和对象的概念 在C++中,类是一个数据结构,它封装了数据以及操作这些数据的方法。对象则是类的具体实例。...

Global site tag (gtag.js) - Google Analytics