1. 程式人生 > >C++實現一個有理數類,包括大小比較,有理數的加減乘除。測試你的類。

C++實現一個有理數類,包括大小比較,有理數的加減乘除。測試你的類。

//實現一個有理數類,包括大小比較,有理數的加減乘除。測試你的類。
#include <iostream>
#include <stdlib.h>

class Rational
{
public:
    Rational(int num,int denom);                   //實現有理數的形式"num/denom"

    Rational operator+(Rational rhs);              //加法過載
    Rational operator-(Rational rhs);              //減法過載
    Rational operator
*(Rational rhs); //乘法過載 Rational operator/(Rational rhs); //除法過載 void print(); //列印結果輸出 private: void normalize(); //對分數的簡化處理 int numerator; //分子 int denominator; //分母 }; Rational::Rational(int num,int denom) { numerator = num; denominator = denom; normalize(); } void
Rational::normalize() { //確保分母為正 if(denominator < 0) { numerator = -numerator; denominator = -denominator; } //歐幾里得演算法 int a = abs(numerator); int b = abs(denominator); while(b>0) { int t = a%b; a = b; b = t; } numerator/=a; denominator/=a; } Rational Rational::operator
+(Rational rhs) { int a = numerator; int b = denominator; int c = rhs.numerator; int d = rhs.denominator; int e = a*b +c*d; int f = b*d; return Rational(e,f); } Rational Rational::operator-(Rational rhs) { rhs.numerator = -rhs.numerator; return operator+(rhs); } Rational Rational::operator*(Rational rhs) { int a = numerator; int b = denominator; int c = rhs.numerator; int d = rhs.denominator; int e = a*c; int f = b*d; return Rational(e,f); } Rational Rational::operator/(Rational rhs) { int t = rhs.numerator; rhs.numerator = rhs.denominator; rhs.denominator = t; return operator*(rhs); } void Rational::print() { if(numerator%denominator == 0) std::cout<<numerator / denominator; else std::cout<<numerator <<"/"<<denominator; } int main() { Rational f1(2,16); Rational f2(7,8); Rational res = f1+f2; f1.print(); std::cout<<" + "; f2.print(); std::cout<<" = "; res.print(); std::cout<<"\n"; res = f1 - f2; f1.print(); std::cout<<" - "; f2.print(); std::cout<<" = "; res.print(); std::cout<<"\n"; res = f1 * f2; f1.print(); std::cout<<" * "; f2.print(); std::cout<<" = "; res.print(); std::cout<<"\n"; res = f1 / f2; f1.print(); std::cout<<" / "; f2.print(); std::cout<<" = "; res.print(); std::cout<<"\n"; return 0; }

這裡寫圖片描述

相關推薦

C++實現一個有理數包括大小比較有理數乘除測試

//實現一個有理數類,包括大小比較,有理數的加減乘除。測試你的類。 #include <iostream> #include <stdlib.h> class Rational { public: Rational(int nu

C/C++實現一個日期過載運算子===+-++-->>=

#include<iostream> #include<windows.h> using namespace std; class Date { public: Date(int year, int month, int day) //建構函式

建立一個Fraction(分數)實現分數的乘除比較大小、約分等方法 要求:為新增屬性

Fraction.h宣告檔案 #import <Foundation/Foundation.h> @interface Fraction : NSObject @property (nonatomic) NSInteger member;//分子 @prope

c++實現一個日期

#pragma once #include <iostream> using namespace std; class Date { private: int _year; int _month; int _day; int GetMonthDa

C++實現一個二叉樹

/**//** 昨天參加宜搜的筆試,要求用C++寫一二叉樹類,實現插入,刪除,定位功能,輾轉再三,* 卻無從下手,甚急,終基礎不好,今天再想,通過層次遍歷二叉樹,再進行實現相關功能* 實也不難. 以下程式碼*//**//** FileName:BTree.cpp* Description:binary tre

C++實現有理數乘除

C++上機題,題目如下: 設計一個有理數類,要求如下: 有理數有整數型別的分子、分母組成,通過運算子過載,完成有理數的加、減、乘、除運算,運算結果要求為最簡分數,即分子分母沒有公約數。在主程式中測試類與方法。 不多廢話,完整程式碼我已經貼出來了,註釋也很詳

C++實現一個日期

最近在複習C++的時候發現日期類是一個非常有用的類,在現實中是非常實用的(雖然我不知道為什麼這麼實用的類,庫裡沒有)以下是我自己實現的日期類的程式碼,因為大部分都是運算子的過載,所以理解起來應該並不難 #include <iostream> #include &

c++實現一個簡單的字串

// string.cpp : 定義控制檯應用程式的入口點。 //c++語言基礎,實現一個簡單的string類 #include <iostream> #include <string> #include "stdlib.h" #include

編寫一個Cirle包括構造方法求圓的面積和周長如果圓的半徑小於0則丟擲異常讓使用者必須處理半徑必須大於0才可以

public class Circle{private double radios;public Circle() {super();// TODO Auto-generated constructor stub}public Circle(double radios) {super();this.radio

Linux-C基礎知識學習:C語言作業-將5個學生成績儲存在一個數組中單獨實現一個計算平均成績的average函式 在main函式中獲取該函式返回的平均值並列印

Linux基礎知識學習 C語言作業:將5個學生成績儲存在一個數組中,單獨實現一個計算平均成績的average函式, 在main函式中獲取該函式返回的平均值,並列印。 #include <s

c語言實現通訊錄包括增加名字刪除資訊查詢修改排序

c語言可以實現的簡單程式,很好的運用了結構體,結構體陣列,結構體指標,函式的實現 //contact.h #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h>

C++實現一個複數

#include <iostream> #include<stdlib.h> using namespace std; class Complex { public: Complex(double real, double ima

C++實現一個string

#include<iostream> using namespace std; class String { private: char * m_data; public:

建立一個學生(Student)包括學號成績程式設計輸入和顯示學生的資訊建立一個人類(Person)包含姓名、性別和年齡並作為學生的基

 #include<iostream.h> class Person {  char name[10];  char sex;  int age; public:  void input()  {   cout<<"請輸入姓名:";   cin>

c#如何保持控制元件位置與窗體同比例?C#實現窗體控制元件隨窗體大小改變(包括字型大小)

可以通過Dock屬性和Anchor屬性來控制 設定控制元件的 Anchor屬性 如果要隨著窗體變化而變化 則設定為Top, Bottom, Left, Right 當然也可以只設定期中幾個值 左邊的設定TOP,LEFT,中間設NONE,右邊的設right,bottom

c++ — 實現一個簡單的string

                      string類的實現 C++使用起來非常方便,原因的它裡面包含的類,這種面向物件的思想讓我們程式設計變得異常方便。今天我們來實現一個string類,這

Linux c實現一個tcp文件服務器和客戶端

repr snippets 功能 stderr strcpy fprintf inet_addr 編寫 create 總體需求:編寫tcp文件服務器和客戶端。客戶端可以上傳和下載文件。 ===========================================

C# 實現一個簡單的 Rest Service 供外部調用

message [] operation rem adk www span method title 用 C# 實現一個簡單的 Restful Service 供外部調用,大體總結為4點: The service contract (the methods it o

關於HslCommunication組件的雙模式客戶端的說明此說明適用於所有的派生客戶端包括三菱西門子歐姆龍modbustcp機器人simplifyNet客戶端等等

idt .cn 適合 數據交互 必須 AR tar 安裝 不用 前言 本文主要是答疑文章,針對廣大網友非常頻繁的提問而總結的問題 nuget地址:https://www.nuget.org/packages/HslCommunication/ g

redhat 7實現基於chap認證的iscsi包括發現認證和正常認證

getc 配置方法 redhat 7 啟動 src var yum 源 -o 客戶端 實驗環境:兩臺虛擬機,系統為redhat7.0以上(本文使用redhat 7.5)第一臺虛擬ip地址為ip:192.168.0.118/24 gw:192.168.0.1 hostname