Шешімі: Исправление программы поиска минимума
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество не делящихся нацело на 3 чисел в исходной последовательности и минимальное не делящееся нацело на 3 число. Если не делящихся нацело на 3 чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Для анализа приведена программа на языке Python. Последовательно выполните следующие действия: определите результат работы программы при вводе последовательности 2 19 24 3; приведите пример последовательности, содержащей хотя бы одно не делящееся нацело на 3 число, для которой программа выведет правильный ответ; найдите допущенные ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки выпишите ошибочную строку и её исправленный вариант. Известно, что нужно исправить не более двух строк. Достаточно указать ошибки и способ их исправления для одного языка программирования. Число 0 делится на любое натуральное число.
1n = 4 2count = 0 3minimum = 1 4for i in range(1, n+1): 5 x = int(input()) 6 if x % 3 != 0: 7 count += 1 8 if x < minimum: 9 minimum = i 10if count > 0: 11 print(count) 12 print(minimum) 13else: 14 print("NO")
Шешімін қадамдап көрсету
6 қадамИз последовательности 2 19 24 3 числа 2 и 19 не делятся на 3, поэтому count станет равным 2. Числа 24 и 3 делятся на 3.
Переменная minimum изначально равна 1. Для числа 2 условие x < minimum ложно, поэтому значение minimum не изменяется. Для числа 19 условие также ложно. Программа выводит количество 2 и значение minimum 1.
$$2\newline1$$Пример последовательности, для которой программа случайно выдаёт правильный ответ: 1 3 6 9. Единственное число, не делящееся на 3, — 1, поэтому правильный ответ: 1 и 1. Программа также выведет 1 и 1.
Первая ошибка: начальное значение minimum равно 1, хотя среди неотрицательных чисел может встретиться любое значение от 0 до 1000. Для корректного поиска минимума удобно установить minimum = 1001.
Вторая ошибка: при нахождении нового минимума в minimum записывается индекс i, а нужно записывать само число x.
После исправлений программа корректно подсчитывает числа, не делящиеся на 3, и находит минимальное из них.
Для последовательности 2 19 24 3 программа выведет 2 и 1. Пример последовательности с правильным результатом: 1 3 6 9. Ошибочные строки и исправления: minimum = 1 заменить на minimum = 1001; minimum = i заменить на minimum = x.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Указать в качестве результата минимальное подходящее число 2 вместо фактического вывода программы 1.
Исправить только строку minimum = i и не изменить начальное значение minimum.
Записать в minimum нөмір позиции найденного числа, а не само число.
Привести последовательность без ни одного числа, не делящегося на 3, хотя требуется хотя бы одно такое число.