-2

こんにちは、私は Java の基本についてある程度の知識はありますが、c++ にはかなり慣れていません。

私はこの演算子を持っています<<:

std::ostream& operator<<(std::ostream& out, Rational& r) {
    int a;
    int b;
    int c;
    int d;

    b = r.n_;
    c = r.d_;
    if (c >= b) {
        a = (b / c);
        d = (b % c);

        r.n_ = d;}


    return out << r.n_ << '/' << r.d_;
    }

基本的に私がやろうとしていることは次のとおりです。出力したい分数が仮分数の場合、帯分数形式に変換して出力できるようにしたい。混合数を計算する if ステートメントを作成しましたが、<< 演算子を使用して出力する方法を理解するのに問題があります。2 つのパラメーターしか使用できないためです。それを行う方法がある場合(クラスインスタンス変数を編集せずに)。

(Rational クラスには、分子と分母の 2 つのインスタンス変数があります)

事前に感謝します。^^

前もって感謝します。

4

1 に答える 1

3

<<「オペレーターは2つのパラメーターしかとれない」という意味がよくわかりません。次のようなことをしようとしているようです。

std::ostream& operator<<(std::ostream& out, Rational& r)
{
    if (r.n_ > r.d_)
    {
        int whole = r.n_ / r.d_;
        int numerator = r.n_ % r.d_;
        return out << whole << ' ' << numerator << '/' << r.d_;
    }

    return out << r.n_ << '/' << r.d_;
}

これはかなり簡単だと思います。多分私はあなたの質問について何かを見逃していますか?

于 2013-04-30T05:04:07.610 に答える