problemscpp
A collection of my answers to algorithm problems in c++.
Public 成员函数 | Private 成员函数 | Private 属性 | 友元 | 所有成员列表
Fraction类 参考

分数 更多...

#include <templates.h>

Public 成员函数

 Fraction (bool positive, long long numerator, long long denominator)
 
unsigned long long get_denominator () const
 
unsigned long long get_numerator () const
 
bool is_positive () const
 
Fraction operator* (const Fraction &f) const
 
Fraction operator+ (const Fraction &f) const
 
Fraction operator- (const Fraction &f) const
 
Fraction operator/ (const Fraction &f) const
 

Private 成员函数

void simplify ()
 

Private 属性

unsigned long long denominator
 分母 更多...
 
unsigned long long numerator
 分子 更多...
 
bool positive
 正负 更多...
 

友元

ostream & operator<< (ostream &os, const Fraction &frac)
 

详细描述

分数

在文件 templates.h71 行定义.

构造及析构函数说明

◆ Fraction()

Fraction::Fraction ( bool  positive,
long long  numerator,
long long  denominator 
)

在文件 templates.cpp401 行定义.

401 {
402 if(numerator < 0) {
404 }
405 if(denominator < 0) {
407 }
408 this->positive = positive;
409 this->numerator = abs(numerator);
410 this->denominator = abs(denominator);
411 this->simplify();
412}
unsigned long long denominator
分母
Definition: templates.h:75
void simplify()
Definition: templates.cpp:395
bool positive
正负
Definition: templates.h:73
unsigned long long numerator
分子
Definition: templates.h:74

引用了 denominator, numerator, positive , 以及 simplify().

被这些函数引用 operator/().

成员函数说明

◆ get_denominator()

unsigned long long Fraction::get_denominator ( ) const

在文件 templates.cpp393 行定义.

393{ return denominator; }

引用了 denominator.

◆ get_numerator()

unsigned long long Fraction::get_numerator ( ) const

在文件 templates.cpp391 行定义.

391{ return numerator; }

引用了 numerator.

◆ is_positive()

bool Fraction::is_positive ( ) const

在文件 templates.cpp389 行定义.

389{ return positive; }

引用了 positive.

◆ operator*()

Fraction Fraction::operator* ( const Fraction f) const

在文件 templates.cpp438 行定义.

438 {
439 long long numerator1 = this->numerator;
440 long long numerator2 = f.numerator;
441 if(!this->positive) {
442 numerator1 = -numerator1;
443 }
444 if(!f.positive) {
445 numerator2 = -numerator2;
446 }
447 return {true, numerator1 * numerator2, static_cast<long long>(this->denominator * f.denominator)};
448}

引用了 denominator, numerator , 以及 positive.

◆ operator+()

Fraction Fraction::operator+ ( const Fraction f) const

在文件 templates.cpp414 行定义.

414 {
415 long long numerator1 = this->numerator * f.denominator;
416 long long numerator2 = this->denominator * f.numerator;
417 if(!this->positive) {
418 numerator1 = -numerator1;
419 }
420 if(!f.positive) {
421 numerator2 = -numerator2;
422 }
423 return {true, numerator1 + numerator2, static_cast<long long>(this->denominator * f.denominator)};
424}

引用了 denominator, numerator , 以及 positive.

◆ operator-()

Fraction Fraction::operator- ( const Fraction f) const

在文件 templates.cpp426 行定义.

426 {
427 long long numerator1 = this->numerator * f.denominator;
428 long long numerator2 = this->denominator * f.numerator;
429 if(!this->positive) {
430 numerator1 = -numerator1;
431 }
432 if(!f.positive) {
433 numerator2 = -numerator2;
434 }
435 return {true, numerator1 - numerator2, static_cast<long long>(this->denominator * f.denominator)};
436}

引用了 denominator, numerator , 以及 positive.

◆ operator/()

Fraction Fraction::operator/ ( const Fraction f) const

在文件 templates.cpp450 行定义.

450{ return *this * Fraction(f.positive, f.denominator, f.numerator); }
Fraction(bool positive, long long numerator, long long denominator)
Definition: templates.cpp:401

引用了 Fraction(), denominator, numerator , 以及 positive.

◆ simplify()

void Fraction::simplify ( )
private

在文件 templates.cpp395 行定义.

395 {
396 const unsigned long long factor = gcd(numerator, denominator);
397 numerator /= factor;
398 denominator /= factor;
399}

引用了 denominator , 以及 numerator.

被这些函数引用 Fraction().

友元及相关函数文档

◆ operator<<

ostream & operator<< ( ostream &  os,
const Fraction frac 
)
friend

在文件 templates.cpp452 行定义.

452 {
453 if(frac.denominator == 0) {
454 os << "Inf";
455 return os;
456 }
457 if(frac.numerator == 0) {
458 os << 0;
459 return os;
460 }
461 if(!frac.positive) {
462 os << "(-";
463 }
464 if(frac.numerator % frac.denominator == 0) {
465 os << frac.numerator / frac.denominator;
466 } else {
467 if(frac.numerator / frac.denominator != 0) {
468 os << frac.numerator / frac.denominator << ' ';
469 }
470 os << frac.numerator % frac.denominator << '/' << frac.denominator;
471 }
472 if(!frac.positive) {
473 os << ")";
474 }
475 return os;
476}

类成员变量说明

◆ denominator

unsigned long long Fraction::denominator
private

分母

在文件 templates.h75 行定义.

被这些函数引用 Fraction(), get_denominator(), operator*(), operator+(), operator-(), operator/() , 以及 simplify().

◆ numerator

unsigned long long Fraction::numerator
private

分子

在文件 templates.h74 行定义.

被这些函数引用 Fraction(), get_numerator(), operator*(), operator+(), operator-(), operator/() , 以及 simplify().

◆ positive

bool Fraction::positive
private

正负

在文件 templates.h73 行定义.

被这些函数引用 Fraction(), is_positive(), operator*(), operator+(), operator-() , 以及 operator/().


该类的文档由以下文件生成: