Работа с ошибкой неверных операндов

Мне было поручено исправить пример кода, полный ошибок для класса программирования 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’ в двоичный оператор ‘%.’

Любой совет, как решить эту проблему …?

0

Решение

Многие люди говорят о том, как оператор мода (%) в 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;
}
1

Другие решения

(firstNumber % secondNumber) вызывает вашу ошибку, так как % работает только с целочисленными типами. Если вам нужно, вы можете разыграть secondNumber чтобы и как нравится:

(firstNumber % static_cast<int>(secondNumber))

Или вы можете использовать FMOD () функция

0

По вопросам рекламы [email protected]