正の分数だけを扱うとする
分数同士の計算をした結果も正になる値でしか計算しないと仮定する
main関数はこのままとする
しかし、このまま実行すると、minが定義されていませんというエラーが出ます。
minを定義していないので当たり前なので、それはわかるのですが、
minを定義してこのプログラムが完成するとしたら、どこで定義すればよいのですか?
また、このエラーがminの問題だけではないならば、どこをどういうふうに変更する必要がありますか?
#include <iostream>
using namespace std;
class Frac {
private:
int bunshi;
int bunbo;
int GCD(int n1, int n2) {
for (int i = min(n1, n2); i >= 1; i--) {
if (n1 % i == 0 && n2 % i == 0) return i; }
return 1;
}
public:
Frac(int n) {
bunshi = n; bunbo = 1;
}
Frac(int shi, int bo) {
int n = GCD(shi, bo); bunshi = shi / n; bunbo = bo / n;
}
Frac mul(Frac a) {
int shi = bunshi * a.bunshi;
int bo = bunbo * a.bunbo;
return Frac(shi, bo);
}
Frac div(Frac a) {
int shi = bunshi * a.bunbo;
int bo = bunbo * a.bunshi;
return Frac(shi, bo);
}
Frac add(Frac a) {
int shi = bunshi * a.bunbo + a.bunshi * bunbo;
int bo = bunbo * a.bunbo;
return Frac(shi, bo);
} Frac sub(Frac a) {
int shi = bunshi * a.bunbo - a.bunshi * bunbo;
int bo = bunbo * a.bunbo;
return Frac(shi, bo);
}
void print() {
if (bunbo == 1) {
cout << bunshi << endl;
} else {
cout << bunshi << " / " << bunbo << endl;
}
}
};
int main()
{ int seisuu;
cin >> seisuu;
Frac a(seisuu);
a.print();
int bunshi, bunbo;
cin >> bunshi >> bunbo;
Frac b(bunshi, bunbo);
b.print();
a.mul(b).print();
a.add(b).print();
a.sub(b).print();
a.div(b).print();
a.add(b).mul(b).print();
return 0;
}