【发布时间】:2020-06-24 06:53:40
【问题描述】:
我想将有理数按升序排序,因此我尝试将数字转换为十进制并对它们进行排序。我已经完成了转换为小数的部分,但我不知道如何在这部分之后继续对小数进行排序。
例如:1/3、5/3、7/2、1/2
输出:1/2、1/3、5/3、7/2
#include<iostream>
#include<string>
using namespace std;
class Fraction
{
private:
float numer = 0.0f;
float denom = 0.0f;
public:
Fraction(int numer, int denom);
~Fraction();
void setNum(int NumInput)
{
numer = NumInput;
};
int getNum()
{
return numer;
};
void setDem(int DemInput)
{
denom = DemInput;
};
int getDem()
{
return denom;
};
float getDec()
{
return numer / denom;
};
};
Fraction::Fraction(int numerator, int denominator)
{
numer = numerator;
denom = denominator;
}
Fraction::~Fraction()
{
}
int main(int argc, const char* argv[])
{
Fraction a1(2, 3);
Fraction a2(7, 2);
Fraction a3(6, 7);
Fraction a4(27, 4);
}
【问题讨论】:
-
您可能可以编写自己的排序算法,或者尝试使用 std::sort(在算法标题下)和自定义函数进行比较。这里有一个如何实现的示例:en.cppreference.com/w/cpp/algorithm/sort
-
你可以为你的类
Fraction定义<操作符,直接使用std::sort。附带一点:为什么您使用float而不是int作为分子和分母?