На ввод программы поступает поступает неизвестное количество целых чисел, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.
Ответ нейросети
11 марта 2026 11:30
Ниже подробное решение задачи с пояснениями и примерами реализации.
Цель решения: понять и пошагово объяснить, как найти максимальное из введённых чётных чисел, если ввод завершается нулём (0 не учитывается как элемент последовательности).
- Алгоритм (логика решения)
- Ввод идёт до тех пор, пока не встретится 0. 0 не считается входным числом.
- Нужно найти максимум среди чисел, которые чётны (делятся на 2 без остатка).
- Алгоритм:
- Завести переменную max_even, инициализированную как «нет найдено» (например, None).
- Считывать числа пока не встретится 0.
- Если считанное число x чётное (x % 2 == 0), обновлять max_even, если оно ещё не найдено или если x больше текущего max_even.
- После цикла: если max_even найдено, вывести его; иначе вывести сообщение о том, что чётных чисел не было.
- Сложности:
- Время: O(n), где n — количество введённых чисел до 0.
- Память: O(1) дополнительной памяти.
- Пошаговый разбор на примере
- Пример 1: 3, 6, 2, 7, 0
- Чётные: 6 и 2. Максимум = 6. Ответ: 6.
- Пример 2: 1, 3, 5, 0
- Чётных нет. Ответ зависит от выбранного формата вывода: можно вывести сообщение «Нет чётных чисел».
- Пример 3: -4, -6, 0
- Чётные: -4, -6. Максимум = -4. Ответ: -4.
- Что делать, если чётных чисел нет?
- По умолчанию лучше выводить понятное сообщение, например: «Нет чётных чисел». Это уточняет результат.
- Если задача требует вернуть конкретное число, можно договориться об использовании специального значения (например, 0 или отрицательное бесконечность), но это зависит от условий задачи и учителя.
- Примеры реализаций
Python (порядок ввода: построчно; можно легко адаптировать под ввод через пробелы)
def max_even_until_zero(): max_even = None while True: x = int(input()) if x == 0: break if x % 2 == 0: if max_even is None or x > max_even: max_even = x if max_even is None: print("Нет чётных чисел") else: print(max_even)
Пример использования: вводите числа по одной строке, завершаете 0.
C++ (построчный ввод, аналогично можно адаптировать под пробелы)
#include <bits/stdc++.h> using namespace std;
int main() { ios::sync_with_stdio(false); cin.tie(nullptr);
long long max_even = 0;
bool found = false;
long long x;
while (cin >> x) {
if (x == 0) break;
if (x % 2 == 0) {
if (!found || x > max_even) {
max_even = x;
found = true;
}
}
}
if (found) cout << max_even << "\n";
else cout << "Нет чётных чисел\n";
return 0;
}
Java (пример без лишних деталей, для общего понимания)
import java.util.Scanner;
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Integer maxEven = null;
while (true) {
if (!sc.hasNextInt()) break;
int x = sc.nextInt();
if (x == 0) break;
if (x % 2 == 0) {
if (maxEven == null || x > maxEven) {
maxEven = x;
}
}
}
if (maxEven == null) System.out.println("Нет чётных чисел");
else System.out.println(maxEven);
sc.close();
}
}
- Ключевые моменты для запоминания
- 0 служит как признак окончания ввода и не учитывается в выборе максимума.
- Любые отрицательные чётные числа могут оказаться максимальными, если других больше нет.
- Сложность линейная по количеству введённых чисел, дополнительной памяти почти нет (O(1)).
Если хочешь, могу адаптировать решение под конкретный язык программирования или под формат ввода (числа через пробел в одну строку, либо файл).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



