Как определить является ли сумма трёх чисел чётным числом кратным X?

Даны 3 числа. Определить, является ли их сумма четным числом, кратным ?. Вот мой код:

//Даны 3 числа. Определить, является ли их сумма четным числом,кратным ?.
#include <conio.h>
#include <iostream>
using namespace std;

int main()
{
    setlocale(LC_ALL, "Rus");
    int a, b, c,x,s;
    cout << "Введите три числа и X: \n";
    cin >> a >> b >> c >> x;
    s = (a + b + c) % x && ((a +b +c) % 2 ==0);
      
    cout << a << "+" << b << "+" << c << "=" << s << endl;    
}

Что тут не так?Тут и проверка суммы на кратность X и проверка на чётность,не пойму в чём проблема,помогите решить.


Ответы (2 шт):

Автор решения: Zhihar

вот этот код означает, что число не кратно x

(a + b + c) % x

вы же сами записали

s = (a + b + c) % x && 
   ((a + b + c) % 2 == 0);

почему же у вас кратность x и кратность 2 отличаются сравнениями :)

если число делится без остатка на другое число, то модуль деления должен быть равен нулю, поэтому и сравнивать надо с нулём

если же этого не делать, что любое иное число кроме 0 будет восприниматься как true и значит проверка будет проверять некратность числа, а не кратность

→ Ссылка
Автор решения: Юрий

Так будет понятней для случайных посетителей этого вопроса.

#include <iostream>
using namespace std;
 
int main()
{    
    int a, b, c, X;
    cout << "Enter integer a, b, c, X:\n";
    cin >> a >> b >> c >> X;
    
    if ((a + b + c) % 2 == 0 && (a + b + c) % X == 0)
        cout << "YES\n";
    else
        cout << "NO\n";
      
    system("pause");
    return 0;
}

Тут проверяется кратна ли сумма X и чётна ли она.

→ Ссылка