Проверьте теперь код. Должен заработать.
Ошибка в вашем коде заключается в том, что он считает нулевой элемент, который является признаком окончания ввода, как часть последовательности.
Поправленный код:
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 0;
while (a != 0)
{
cin >> a;
// Проверяем, не равен ли введенный элемент нулю
if (a == 0) {
break; // Выходим из цикла, если элемент равен нулю
}
if (a % 2 == 0 && a % 7 == 0)
{
b += 1;
}
}
cout << b;
}
Объяснение:
Добавлен блок if (a == 0) { break; } внутри цикла.
Этот блок проверяет, не равен ли введенный элемент нулю.
Если равен, то выполняется команда break, которая прерывает цикл while.
Благодаря этому, нулевой элемент больше не учитывается при подсчете четных чисел, кратных 7.
С этими изменениями код должен работать корректно и выводить правильное количество чисел.
Код выдает число на 1 больше верного
что не так?
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 0;
while (a != 0)
{
cin >> a;
if (a%2 == 0 and a%7 == 0)
{
b+=1;
}
}
cout << b;
}