Мне было поручено исправить пример кода, полный ошибок для класса программирования C ++. Эта программа разработана таким образом, что в качестве входных данных вводятся два числа — первое число, впоследствии разделенное на второе, а выходное значение — остаток. Я отработал почти все ошибки, но у меня возникла проблема с одной оставшейся ошибкой (которую я могу собрать), которую я не могу понять.
#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 … «недопустимые операнды типов ‘int’ и ‘double’ в двоичный оператор ‘%.’
Любой совет, как решить эту проблему …?
Многие люди говорят о том, как оператор мода (%) в C ++ работает только с целыми числами. Некоторые предложили кастинг secondNumber
к INT и другие упоминали мод модов, которые работают с числами с плавающей запятой, как 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;
}
(firstNumber % secondNumber)
вызывает вашу ошибку, так как %
работает только с целочисленными типами. Если вам нужно, вы можете разыграть secondNumber
чтобы и как нравится:
(firstNumber % static_cast<int>(secondNumber))
Или вы можете использовать FMOD () функция