最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談C++有理數(shù)的表達和計算

 更新時間:2021年11月02日 11:56:52   作者:mou某謀  
這篇文章主要為大家詳細介紹了C++有理數(shù)的表達和計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
#ifndef Rational_hpp
#define Rational_hpp
#include <stdio.h>
#include <string>
using namespace std;
class Radtional{
public:
    Radtional();
    Radtional(int numerator,int denominator);
    int getNumerator()const;
    int getDemominator()const;
    Radtional add(const Radtional& secondRational);
    Radtional sub(const Radtional& secondRational);
    Radtional mult(const Radtional& secondRational);
    Radtional div(const Radtional& secondRational);
    int compareTo(const Radtional& secondRational);
    bool equals(const Radtional& secondRational);
    int intValue();
    double doubleValue();
    string toString();
private:
    int numerator,denominator;
    static int gcd(int n,int d);
};
#endif /* Rational_hpp */
#include "Rational.hpp"
#include <sstream>
#include <cstdlib>
Radtional::Radtional(){
    numerator = 0;
    denominator = 1;
}
Radtional::Radtional(int numerator,int denominator)
{
    int factor = gcd(numerator, denominator);
    this->numerator = ((numerator>0) ? 1: -1)*abs(numerator)/factor;
    this->denominator = abs(denominator)/factor;
}
int Radtional::getNumerator()const{
    return numerator;
}
int Radtional::getDemominator()const{
    return denominator;
}
int Radtional::gcd(int n, int d){
    int n1 = abs(n);
    int n2 = abs(d);
    int gcd =1;
    for (int i = 1; i<=n1&&i<=n2; i++) {
        if (n1%i==0&&n2%i==0) {
            gcd = i;
        }
    }
    return gcd;
}
Radtional Radtional::add(const Radtional& secondRational){
    int n = numerator*secondRational.getDemominator()+denominator*secondRational.getNumerator();
    int d = denominator * secondRational.getDemominator();
    return Radtional(n,d);
}
Radtional Radtional::sub(const Radtional &secondRational){
    int n = numerator * secondRational.getDemominator() - denominator* secondRational.getNumerator();
    int d = denominator * secondRational.getDemominator();
    return Radtional(n,d);
}
Radtional Radtional::mult(const Radtional &secondRational){
    int n = numerator * secondRational.getNumerator();
    int d = denominator * secondRational.getDemominator();
    return Radtional(n,d);
}
Radtional Radtional::div(const Radtional &secondRational){
    int n =numerator * secondRational.getDemominator();
    int d =denominator * secondRational.getNumerator();
    return Radtional(n,d);
}
int Radtional::compareTo(const Radtional &secondRational){
    Radtional temp =sub(secondRational);//兩值相減
    if (temp.getNumerator()<0) {
        return -1;
    }
    else if (temp.getNumerator()==0){
        return 0;
    }
    else
        return 1;
}
bool Radtional::equals(const Radtional &secondRational){
    if (compareTo(secondRational)==0) {
        return true;
    }
    else
        return false;
}
int Radtional::intValue(){
    return getNumerator()/getDemominator();
}
double Radtional::doubleValue(){
    return 1.0*getNumerator()/getDemominator();
}
string Radtional::toString(){
    stringstream ss;
    ss<<numerator;
    if (denominator>1) {
        ss<<"/"<<denominator;
    }
    return ss.str();
}

簡單測試

#include <iostream>
#include "Rational.hpp"
int main(int argc, const char * argv[]) {
    // insert code here...
    Radtional a(3,2);
    Radtional b(2,5);
    Radtional c(1,3);
    Radtional d(2,6);
    cout<<a.toString()<<" + "<<b.toString()<<"="<<(a.add(b)).toString()<<endl;
    cout<<a.toString()<<" - "<<b.toString()<<"="<<(a.sub(b)).toString()<<endl;
    cout<<a.toString()<<" * "<<b.toString()<<"="<<(a.mult(b)).toString()<<endl;
    cout<<a.toString()<<" / "<<b.toString()<<"="<<(a.div(b)).toString()<<endl;
    cout<<c.toString()<<" - "<<a.toString()<<"="<<(c.sub(a)).toString()<<endl;
    cout<<c.toString()<<"的int轉換為"<<c.intValue()<<endl;
    cout<<c.toString()<<"的double轉換為"<<c.doubleValue()<<endl;
    cout<<c.toString()<<"和"<<a.toString()<<"比較結果"<<c.compareTo(a)<<endl;
    cout<<c.toString()<<"和"<<d.toString()<<"比較結果"<<c.compareTo(d)<<endl;
    cout<<b.toString()<<"和"<<a.toString()<<"比較結果"<<b.compareTo(a)<<endl;
    return 0;
}

測試結果

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • C語言中的浮點數(shù)存儲詳解

    C語言中的浮點數(shù)存儲詳解

    這篇文章主要介紹了C語言中的浮點數(shù)存儲詳解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C語言對數(shù)組元素進行冒泡排序的實現(xiàn)

    C語言對數(shù)組元素進行冒泡排序的實現(xiàn)

    這篇文章主要介紹了C語言對數(shù)組元素進行冒泡排序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • C語言多組輸入使用方法

    C語言多組輸入使用方法

    這篇文章主要給大家介紹了關于C語言多組輸入使用的相關資料,在 C語言中可以使用循環(huán)語句來實現(xiàn)多組輸入,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 基于C語言實現(xiàn)http下載器

    基于C語言實現(xiàn)http下載器

    做OTA升級功能時,我們能直接拿到的往往只是升級包的鏈接,需要我們自己去下載,這時候就需要用到http下載器。本文將利用C語言實現(xiàn)簡單的http下載器,感興趣的可以了解一下
    2022-12-12
  • C++ invoke與function的區(qū)別解析

    C++ invoke與function的區(qū)別解析

    invoke函數(shù)的實現(xiàn)原理是通過使用SFINAE(Substitution Failure Is Not An Error)技術來判斷可調(diào)用對象的類型,并根據(jù)類型調(diào)用對應的調(diào)用方式,這篇文章主要介紹了C++ invoke與function的區(qū)別,需要的朋友可以參考下
    2023-10-10
  • opencv學習筆記C++繪制灰度直方圖

    opencv學習筆記C++繪制灰度直方圖

    這篇文章主要為大家介紹了opencv學習筆記C++繪制灰度直方圖的實現(xiàn)代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • MFC自定義消息的實現(xiàn)方法

    MFC自定義消息的實現(xiàn)方法

    這篇文章主要介紹了MFC自定義消息的實現(xiàn)方法,通過該示例可以更好的理解MFC的消息封裝機制,以便更加靈活的打造個性化的windows應用程序,需要的朋友可以參考下
    2014-07-07
  • C++中的封裝、繼承、多態(tài)理解

    C++中的封裝、繼承、多態(tài)理解

    這篇文章主要介紹了C++中的封裝、繼承、多態(tài)介紹,需要的朋友可以參考下
    2020-01-01
  • C語言內(nèi)存對齊實例詳解

    C語言內(nèi)存對齊實例詳解

    這篇文章主要介紹了C語言內(nèi)存對齊,包括內(nèi)存對其的基本概念及用法,以及注意事項,并以實例形式加以說明,需要的朋友可以參考下
    2014-09-09
  • C++ 遍歷目錄下文件簡單實現(xiàn)實例

    C++ 遍歷目錄下文件簡單實現(xiàn)實例

    這篇文章主要介紹了c++ 遍歷文件的相關資料,這里附有實現(xiàn)實例代碼,需要的朋友可以參考下
    2017-02-02

最新評論

沈丘县| 汝州市| 依安县| 龙泉市| 蚌埠市| 富源县| 河北区| 额敏县| 楚雄市| 邢台市| 紫阳县| 时尚| 称多县| 太原市| 剑阁县| 建瓯市| 崇义县| 涪陵区| 贵溪市| 梨树县| 平阳县| 布尔津县| 灵宝市| 信阳市| 鄯善县| 永安市| 淅川县| 来安县| 惠来县| 夹江县| 恩施市| 常宁市| 仁布县| 浦北县| 玉树县| 乌审旗| 百色市| 扎鲁特旗| 宜宾市| 荣成市| 东乌珠穆沁旗|