1) 2
2)
maxdigit:=10 должен быть заменен на maxdigit:=0, так как программа считает с самого начала, что максимальной цифрой будет 10.
while N > 10 do должен быть заменен на while N > 0 do, так как мы не учитываем последнюю цифру.
writeln(digit); должен быть заменен на writeln(maxdigit);, так как мы выводим не результат, а последнюю рассматриваемую цифру
Источник: napyaterku.com
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа, не превосходящих 5
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа, не превосходящих 5. Программист написал программу неправильно.
Последовательно выполните следующее.
Задание 24 | ЕГЭ по информатике | ДЕМО-2021
1. Напишите, что выведет программа при вводе числа 4715.
2. Приведите пример такого числа, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.
Для каждой ошибки
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку,— приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Показать ответ
1. При вводе числа 4715 программа выведет 4.
2. Пример входного числа, для которого программа работает правильно: 7468.
3. Программа содержит две строки с ошибками (Паскаль):
Источник: ege-today.ru
Презентация, доклад на тему Решение С1 по информатике — поиск ошибок в программе со сложным условием
Слайд 1Решение С1 по информатике — поиск ошибок в программе со сложным
(повышенный уровень, время – 30 мин)
Слайд 2 в программе осуществлен ввод лишних данных;
ошибка в операторе условия
Слайд 3входные данные – числовые выражения и задание содержит три вопроса:
определить при
каких входных данных программа работает неверно (вопрос для всех классов заданий С1);
определить лишнюю часть представленной программы;
исправить предложенную программу.
ЕГЭ по информатике 2014 Задача С1
входные данные – числовые выражения, но вопросов два (т.е. в исходной части программы две ошибки);
входные данные – числовые, вопросов два, оба касаются исправления программы, но второй вопрос сформулирован довольно жёстко (требует не содержать логических функций и т.д.)
входные данные – строковые переменные, а в остальном соответствует первому классу заданий С1.
Классификация заданий С1
Слайд 4Задача№1. Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты
точки на плоскости (x, y — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.
Слайд 5
Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах,
принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области.
В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Последовательно выполните следующее:
Слайд 6Элементы ответа:
Показать график
Слайд 7Вернуться
Слайд 8Возможная доработка (Паскаль, разбиение области на две части прямой x =
0):
if ((y>=x*x─2) and (y =0)) or ((x = 0) или (x
Слайд 9Задача №2. Требовалось написать программу, которая решает уравнение «a |x|
= 6» относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
Последовательно выполните три задания:
Приведите пример таких чисел a, b, x, при которых программа неверно решает поставленную задачу.
Укажите, какая часть программы является лишней.
Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Слайд 10Пояснение
a = 1, b = −1, x = 0.
Значение x может
быть не указано. Значения а и b могут быть любыми ненулевыми
числами с разными знаками. Ошибка программиста состоит в том, что программа
работает неправильно при любых ненулевых а и Ь, имеющих разные знаки.
Лишняя часть: не нужно вводить х с клавиатуры; верно: readln(a, Ь).
Возможная доработка:
readln(а, b);
if а = 0 then
if b = 0 then write(‘любое число’)
else write(‘нет решений’)
else
if b/а > 0 then write(‘х =’, Ь/а, ‘ или х =’, -Ь/а)
else
if b = 0 then write(‘х =0’)
else write(‘нет решений’);
Слайд 11Задача№3 Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты
точки на плоскости (x, y — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Ученик написал такую программу:
Слайд 12При проверке работы программа выполнялась по шагам для некоторых контрольных значений
х и у, при этом был заполнен протокол тестирования. В результате неаккуратного обращения протокол был испорчен, частично сохранились только четыре строки:
Слайд 13Пояснение
2. Для написания правильной программы необходимо разделить требуемую область на части
и описать каждую из них. Например, можно выделить области FGLM, HN и QR. При этом получается такой фрагмент программы (пример на Паскале):
if (y =x*x-5) and (x*y =0)
then
write(‘принадлежит’)
else
write(‘не принадлежит’)
Слайд 14Вернуться
Слайд 15Задача№4
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число
N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 584.
3. Укажите одно число для которого эта программа будет работать верно.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Слайд 16Программа выведет число 2.
Программа работает верно для всех чисел, начинающихся на
9. в том числе для числа 9. [Достаточно указать любое такое число.]
В качестве ответа для остальных чисел программа выдаёт число на 1 меньшее, чем нужно. Возможные (не все) варианты исправления для языка Паскаль:
1) исправление условия продолжения цикла на while (N >= 1) do или while (N > 0) do. При этом замена на while (N >= 0) do корректной не является.
2) исправление инициализации на sum := 1, а условие продолжения цикла на while (N > 9) do или while (N >= 10) do.
Источник: shareslide.ru