私は高調波数を見つけています。関数は、プログラムのデバッグに使用していた行が最後の cout 行である入力である限り、正しい高調波数を見つけるまで循環します。cout の一部を削除すると、プログラムが再び失敗し始めます。cout がプログラムにどのように影響しているかについて、私は完全に途方に暮れています。それがなければ、すべてがゼロを格納します。
struct fraction
{
long nume, denom;
};
void add (fraction x, fraction y, fraction& result)
{
long Numerator, Denominator, GCD, Higher, Lower;
Numerator = (x.nume * y.denom + x.denom * y.nume);
Denominator = (x.denom * y.denom);
if (Numerator > Denominator)
{
Lower = Denominator;
Higher = Numerator;
}
else if (Numerator < Denominator)
{
Higher = Denominator;
Lower = Numerator;
}
while (Higher % Lower > 0)
{
GCD = Higher % Lower;
Higher = Lower;
Lower = GCD;
}
result.nume = Numerator/GCD;
result.denom = Denominator/GCD;
cout << "d " << result.nume << " " << GCD << " " << Denominator/GCD << " " << result.denom << endl;
}