#include <iostream>
using namespace std;
int g_c_d(int n, int d);
class Fraction
{
private:
//variables to store numerator and denominator
int num;
int denom;
public:
Fraction(){}
Fraction(int num): num(num) {}
Fraction(int num, int denom): num(num), denom(denom) {}
void set_num(int n){ num = n;}
void set_denom(int d){ denom = d;}
int get_numerator() const {return num;}
int get_denominator() const {return denom;}
};
int g_c_d(int n, int d){
return d == 0? n : g_c_d(d, n % d);
}
istream &operator>> (istream &input, Fraction &f)
{
int n, d;
char slash;
input >> n;
input >> slash;
input >> d;
if (d == 0) {n = 0;} //if denom is 0; fraction = 0/0
f = Fraction(n, d);
return input;
}
ostream &operator<<(ostream &output, const Fraction &frac)
{
return output << frac.get_numerator() << "/" << frac.get_denominator();
}
int main()
{
int n, d;
Fraction frac;
int gcd;
n = frac.get_numerator();
d = frac.get_denominator();
gcd = g_c_d(frac.get_numerator() , frac.get_denominator());
cout << "Enter a fraction" << endl;
cin >> frac;
frac.set_num(n/gcd);
frac.set_denom(d/gcd);
cout << "your fraction is: ";
cout << frac << endl;
return 0;
}
Привет, я пытаюсь упростить фракции, введенные пользователем. Однако каждый раз, когда я ввожу часть, которая должна быть упрощена, возвращаемый результат равен «1/0».Как реализовать наибольший общий делитель для упрощения фракций
Может кто-нибудь, пожалуйста, помогите, это будет очень ценится!
Вы использовали отладчик? Отладчики действительно полезны в этих обстоятельствах. –
Вы пытались найти StackOverflow для подобных вопросов, например, используя «класс фракций C++» –
Вам нужно инициализировать числитель и знаменатель в конструкторе по умолчанию. –