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