@nimbus214

В чём ошибка кода?

E2140 expression must have integral or unscoped enum type Выдаёт ошибку, в чём её суть не понятна
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double x, y;
	cin >> x >> y;
	if ((ceil(y)) % 2 && !((floor(x)) % 2))
		cout << ((x - floor(x)) * (x - floor(x)) + (y - ceil(y)) * (y - ceil(y)) <= 1) << endl;
	if (!((ceil(x)) % 2) && ((floor(y)) % 2))
		cout << ((x - ceil(x)) * (x - ceil(x)) + (y - floor(y)) * (y - floor(y)) <= 1) << endl;
	if (!((ceil(y)) % 2 && !((floor(x)) % 2)) && !(!((ceil(x)) % 2) && ((floor(y)) % 2)))
		cout << "false" << endl;
	return 0;
}
  • Вопрос задан
  • 629 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
if (!((ceil(y)) % 2 && ...

Поставьте скобки вокруг ... % 2

Приоритет операций такой, что сначала вычислится 2 && ... и потом вы на этот bool попытаетесь поделить с остатком.

И вообще, ваш код невозможно читать. Слишком много скобок. Во-первых, введите 4 переменные и посчитайте в них floor/ceil от x/y. Удалите очевидно лишние скобки.

Потом вместо !(a%2) лучше писать (a % 2 == 0), а то с вашим количеством скобок вообще непонятно, к чему ! относится.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы