0

私は、C++ プログラミング クラスのエラーだらけのサンプル コードを修正する任務を負っています。このプログラムは、入力として 2 つの数値が入力されるように設計されており、最初の数値を 2 番目の数値で割った結果が出力されます。私はほとんどすべてのエラーを解決しましたが、1 つのエラー (私が収集できるもの) が残っているという問題があり、それを理解できないようです。

#include <iostream>
using namespace std;

int main()
{
    int firstNumber; 
    double secondNumber;

    cout << "Please enter two whole numbers: ";
    cin >> firstNumber >> secondNumber;
    cout << firstNumber << " divided by " << secondNumber
         << " is " << (firstNumber / secondNumber) << endl
         << "with a remainder of " << (firstNumber % secondNumber) 
         << endl;
}

私が得ているエラーは13行目です...「バイナリの「operator%」へのタイプ「int」および「double」のオペランドが無効です。

この問題を解決する方法について何かアドバイスはありますか?

4

2 に答える 2

1

多くの人が、C++ の mod 演算子 (%) が整数に対してのみ機能する方法について話しています。int へのキャストを提案する人もいれば secondNumber、 のような浮動小数点数で機能する mod 操作について言及する人もいますfmod

secondNumberこの問題に対するより良い解決策は、プログラムの先頭で整数として宣言することです。整数除算 (商剰余) を扱う場合、浮動小数点数を使用する理由はありません。問題の定義は整数に対してのみ定義されているように見えるため、整数のみを使用する必要があります。

#include <iostream>
using namespace std;

int main() {
    int firstNumber, secondNumber;

    cout << "Please enter two whole numbers: ";
    cin >> firstNumber >> secondNumber;
    cout << firstNumber << " divided by " << secondNumber
         << " is " << (firstNumber / secondNumber) << endl
         << "with a remainder of " << (firstNumber % secondNumber) 
         << endl;
    return 0;
}
于 2015-02-02T20:49:20.830 に答える
0

(firstNumber % secondNumber)%整数型でのみ機能するため、エラーが発生しています。必要に応じて、次secondNumberのようにキャストして intすることができます。

(firstNumber % static_cast<int>(secondNumber))

または、 fmod()関数を使用できます

于 2015-02-02T18:52:43.820 に答える