首页 > 其他分享 >类内 重载运算符 分数 加减乘除

类内 重载运算符 分数 加减乘除

时间:2023-12-10 14:11:05浏览次数:34  
标签:return 类内 r2 int numerator denomirator 运算符 Rational 加减乘除

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
class Rational{
    private :
    int numerator,denomirator;
    static int gcd(int n,int d);
    public :
    Rational(){};
    Rational(int nume,int deno) : numerator(nume),denomirator(deno){
        simply();
    }
    void simply()
    {
        int d = gcd(numerator,denomirator);
        numerator /= d;
        denomirator /= d;
        return;
    }
    int getNumerator(){   return numerator;    }
    int getDenomirator(){   return denomirator;   }
    int equal(const Rational& second);//比较分数大小
    int intValue();//返回分数的整数部分
    double doubleValue();//小数分子
    Rational(int num){// 整数转化为分数
        numerator = num;
        denomirator = 1;
    }
    Rational operator + (Rational r2);
    Rational operator - (Rational r2);
    Rational operator * (Rational r2);
    Rational operator / (Rational r2);
    friend istream& operator>>(istream& scint, Rational& r);
    friend ostream& operator<<(ostream& scout,const Rational& r);
};
int Rational::gcd(int a,int b)
{
    if(b == 0) return a;
    return gcd(b,a%b);
}
int Rational::equal(const Rational& second)
{
    int t = numerator * second.denomirator - second.numerator * denomirator;
    if(t > 0) return 1;
    if(t == 0) return 0;
    if(t < 0) return -1;
}
int Rational::intValue(){  return numerator / denomirator; }
double Rational::doubleValue(){ return (double)(numerator % denomirator)* 1.0 / (double)denomirator;   }
Rational Rational::operator +(Rational r2)
{
    int num = numerator * r2.denomirator + denomirator * r2.numerator;
    int deno = denomirator * r2.denomirator;
    return Rational(num,deno);
}
Rational Rational::operator -(Rational r2)
{
    int num = numerator * r2.denomirator - denomirator * r2.numerator;
    int deno = denomirator * r2.denomirator;
    return Rational(num,deno);
}
Rational Rational::operator *(Rational r2)
{
    int num = numerator * r2.numerator;
    int deno = denomirator * r2.denomirator;
    return Rational(num,deno);
}
Rational Rational::operator /(Rational r2)
{
    int num = numerator * r2.denomirator;
    int deno = denomirator * r2.numerator;
    return Rational(num,deno);
}
istream& operator>>(istream& scint, Rational& r)
{
    cout << "输入分数(格式:分子/分母):";
    scint >>r.numerator >> r.denomirator;
    r.simply();
    return scint;
}
ostream& operator <<(ostream& scout,const Rational& r)
{
    scout << r.numerator;
    if(r.denomirator != 1)
    scout<<"/"<<r.denomirator;
    return scout;
}
bool operator < (Rational r1,Rational r2)
{
    if(r1.equal(r2) == -1) 
    return true;
    return false;
}
bool operator > (Rational r1,Rational r2)
{
    if(r1.equal(r2) == 1) 
    return true;
    return false;
}
bool operator == (Rational r1,Rational r2)
{
    if(r1.equal(r2) == 0) 
    return true;
    return false;
}
bool operator != (Rational r1,Rational r2)
{
    if(r1.equal(r2) != 0) 
    return true;
    return false;
}
int main()
{
    Rational a,b;
    cin>>a;
    cin>>b;
    cout<<a + b<<endl;
    cout<<a - b<<endl;
    cout<<a * b<<endl;
    cout<<a / b<<endl;
    if(a < b) cout<<a<<" < "<<b<<endl;
    else if( a == b) cout<<a<<" = "<<b<<endl;
    else if(a > b) cout<<a<<" > "<<b<<endl;
    return 0;
}

标签:return,类内,r2,int,numerator,denomirator,运算符,Rational,加减乘除
From: https://www.cnblogs.com/Elgina/p/17892591.html

相关文章

  • -变量作用域与运算符
    变量作用域与运算符//类变量staticstaticdoublesalary=2500;//虽然是整数但一样能用,因为精度更高//属性:变量//实例变量:从属于对象(类):如果不自行初始化,这个类型的默认值是0//布尔值:默认是false//除了基本类型(八个),其余的默认值是nullStringname;intage;//main方......
  • 变量作用域与运算符
    变量作用域与运算符//类变量staticstaticdoublesalary=2500;//虽然是整数但一样能用,因为精度更高//属性:变量//实例变量:从属于对象(类):如果不自行初始化,这个类型的默认值是0//布尔值:默认是false//除了基本类型(八个),其余的默认值是nullStringname;intage;//main方......
  • [Python]运算符: / 和 % 和 //计算差异是什么?
    /和%和//(地板除)在Python中的作用是:用于对数据进行除法运算。python中与除法相关的三个运算符是//和/和%,下面逐一讲解。“/”,这是传统的除法,5/2=2.5“//”,在python中,这个叫“地板除”,3//2=1“%”,这个是取模操作,也就是区余数,8%2=0,7%2=1Python中分为3种除法:1、/,2、%,3......
  • Java_1 变量、运算符、表达式、输入与输出
    1编写一个简单的Java程序–手速练习publicclassMain{publicstaticvoidmain(String[]args){System.out.println("HelloWorld");}}2语法基础2.1变量变量必须先定义,才可以使用。不能重名。变量定义的方式:publicclassMain{publicstat......
  • Java运算符
    1.运算符1.1算术运算符算术运算符是对数值型的变量进行运算publicclassOperator{publicstaticvoidmain(Stringargs[]){System.out.println(10/4);//2System.out.println(10.0/4);//2.5doubled=10/4;System.out.println(......
  • C-04.运算符(基础)
    运算符1.算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行+,-,*,/,%运算。1.1加法和减法运算符mysql>SELECT100,100+0,100-0,100+50,100+50-30,100+35.5,100-35.5->FROMdual;+-----+---------+--------......
  • Java扩展赋值运算符,字符串连接符
    1.扩展赋值运算符  2.字符串连接符   ......
  • Java逻辑运算符,短路运算
     短路运算 因为c=5,所以c<4为false,又因为逻辑与运算,只要出现一个false就会输出所以booleand=(c<4)&&(c++<4);这行代码直接会输出false,(c++<4)也不会被执行所以输出的结果为false,c=5,而不是c=6.-----------------------------------------------------------------------......
  • Python中级之列表字典推导式和三元运算符
    列表生成式列表生成式是一种在Python中用于创建列表的简洁和优雅的语法。它允许你使用一行代码生成一个新的列表,而不必使用传统的循环语句。以下是列表生成式的基本语法:[expressionforiteminiterableifcondition]expression:用于生成新列表中每个元素的表达式。ite......
  • 软件测试/人工智能|Python逻辑运算符如何灵活使用
    前言当初学者探索Python编程时,理解逻辑运算符是掌握编程逻辑和决策流程的重要一环。逻辑运算符允许我们对多个条件进行组合,以便进行更复杂的逻辑判断。让我们深入了解Python中常用的逻辑运算符及其使用方法。逻辑运算符逻辑运算符一般用来解决当有多个关系条件需要判断时使用,......