Задание №8672: Алгоритмы и программирование
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и сумму таких чисел. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования. Бейсик Python CONST n = 4 count = 0 sum = 0 FOR I = 1 TO n INPUT x IF x mod 2 <> 0 THEN count = count + 1 sum = x END IF NEXT I IF n > 0 THEN PRINT count PRINT sum ELSE PRINT "NO" END IF n = 4 count = 0 sum = 0 for i in range (1, n+1): x = int(input()) if x % 2 != 0: count += 1 sum = x if n > 0: print (count) print (sum) else: print ("NO") Алгоритмический язык Паскаль алг нач цел n = 4 цел i , x цел sum, count count := 0 sum := 0 нц для i от 1 до n ввод x если mod(x, 2) <> 0 то count := count + 1 sum := x все кц если n > 0 то вывод count , нс вывод sum, нс иначе вывод " NO " все кон const n = 4; var i, x: integer; var sum, count : integer; begin count := 0; sum := 0; for i := 1 to n do begin read(x); if x mod 2 <> 0 then begin count := count + 1; s um := x end end; if n > 0 then begin writeln(count); writeln( sum ) end else writeln('NO') end. С++ #include <iostream> using namespace std; int main() { const int n = 4; int x, sum, count; count = 0; sum = 0; for (int i = 1; i <= n; i++) { cin >> x; if (x % 2 != 0) { count++; sum = x; } } if (n > 0) { cout << count << endl; cout << sum << endl; } else cout << "NO" << endl; return 0; } Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе последовательности: 20 33 40 55. 2. Приведите пример такой последовательности, содержащей хотя бы одно нечётное число, что при её вводе приведённая программа, несмотря на ошибки, выведет правильный ответ. 3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Что проверяет это задание
Задание относится к теме «Алгоритмы и программирование». Для решения понадобятся:
- формализация задачи
- построение алгоритма
- проверка граничных случаев
Источник: ФИПИ — открытый банк заданий
Качество материала
Показываем, из чего состоит страница и можно ли проверить материал по первоисточнику.
Происхождение задания
- Банк заданий
- ФИПИ — открытый банк заданий
- Организатор
- ФИПИ
- Материалы
- 0 файла
Связанные понятия
План самостоятельного решения
- Перепишите известные данные и отдельно сформулируйте, что требуется найти или доказать.
- Свяжите условие с темой «Алгоритмы и программирование» и выберите подходящее правило, формулу или способ рассуждения.
- Запишите промежуточные шаги: это помогает заметить потерянный знак, случай или логический переход.
- Сверьте результат со всеми ограничениями условия и только затем откройте подробный разбор.
Ориентировочное время: 25 минут.
Закрепить тему
После разбора попробуйте решить ещё десять заданий по предмету «Информатика». Вариант формируется заново, а ответы можно сразу проверить.
Решение по шагам
Самопроверка после решения
- Я использовал все данные из условия и не добавил неподтверждённых предположений.
- Каждый переход в рассуждении объяснён правилом, формулой или ранее доказанным фактом.
- Ответ соответствует вопросу, а обозначения и единицы измерения записаны однозначно.
- Я сравнил свой ход решения с разбором и понял причину каждого отличия.
Типичные ошибки
- Перепутать основание системы счисления.
- Не учесть границы диапазона.
- Проверить алгоритм только на одном примере.