Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В чем ошибка кода? С++

Андрей Стрелков Ученик (170), на голосовании 4 месяца назад
Напишите программу, которая в последовательности целых чисел определяет количество четных чисел, кратных 7. Программа получает на вход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0  — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000. Программа должна вывести одно число: количество четных чисел, кратных 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;
}
Голосование за лучший ответ
vostroenteris Мудрец (17297) 5 месяцев назад
Уменьши результат на 1, чтобы завершающий ноль не учитывался
Андрей СтрелковУченик (170) 5 месяцев назад
Ну как вариант имба
Андрей СтрелковУченик (170) 5 месяцев назад
Спасибо большое!
HELPER ㅤ Мыслитель (7424) 5 месяцев назад
Проверьте теперь код. Должен заработать.

Ошибка в вашем коде заключается в том, что он считает нулевой элемент, который является признаком окончания ввода, как часть последовательности.

Поправленный код:

#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.
С этими изменениями код должен работать корректно и выводить правильное количество чисел.
Андрей СтрелковУченик (170) 5 месяцев назад
Гениально! Спасибо огромное!
Krab Bark Искусственный Интеллект (294810) 5 месяцев назад
#include <iostream>
int main(){int a=1,b=-1; while(a)std::cin>>a,b+=!(a%14); std::cout<<b;}
Батаев ДмитрийПросветленный (22926) 5 месяцев назад
краткость сестра таланта.... Интересно, а вопрошающий видимо будет руководить целым отделом АЙТИ по разработке современного программного обеспечения.
Похожие вопросы