Условие задачи
498) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10 9 , и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно:
N = int(input()) min_digit = 0 while N > 0: digit = N % 10 if digit > min_digit: min_digit = digit N = N // 10 print(min_digit)
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 0; while N > 0 do begin digit := N mod 10; if digit > min_digit then min_digit := digit; N := N div 10; end; writeln(min_digit); end.
#include using namespace std; int main() < long N; int digit, min_digit; cin >> N; min_digit = 0; while (N > 0) < digit = N % 10; if (digit >min_digit) < min_digit = digit; >N = N / 10; > cout
Последовательно выполните следующее:
1. Определите, что выведет программа при вводе числа 532.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки выпишите номер строки и укажите, как надо исправить ошибку — приведите правильный вариант строки.
Задание 6 | ЕГЭ по информатике | ДЕМО-2021
Источник: egoroffartem.pythonanywhere.com
Набор, верстка и оригинал-макет – каф. И4 БГТУ
1. Определите, что выведет программа при вводе числа 532.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как надо исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
46) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10 9 , и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно:
var N: longint;
digit, min_digit: integer;
readln(N);
min_digit:= 0;
while N > 0 do begin
digit:= N mod 10;
if digit > min_digit then
min_digit:= digit;
N:= N div 10;
end;
writeln(min_digit);
Последовательно выполните следующее:
1. Определите, что выведет программа при вводе числа 532.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как надо исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
47) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10 9 , и выводится количество цифр этого числа. Программист торопился и написал программу неправильно:
Разбор 24 задание || ЕГЭ Информатика || ДЕМО 2019
var N: longint;
count: integer;
readln(N);
count:= 1;
while N > 1 do begin
count:= count + 1;
N:= N div 10;
end;
writeln(count);
Последовательно выполните следующее:
1. Определите, что выведет программа при вводе числа 123.
2. Укажите одно число, для которого программа выводит неверный результат.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как надо исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
48) Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число, не превосходящее 10 8 , и выводится его первая (старшая) цифра. Ученик написал такую программу:
var n: longint;
read(n);
while n>10 do begin
n:= n mod 10
end;
write(n);
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1984.
2. Приведите пример числа, при вводе которого программа выдаст верный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
49) Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 10 9 , и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры – единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно. Программист торопился и написал программу неправильно.
var N, R, T: longint;
d: integer;
readln(N);
R:=0;
T:=1;
while N>0 do begin
d:= N mod 10;
if d<>1 then begin
R:= R + d*T;
T:= T+1
end;
N:= N div 10;
end;
writeln(T);
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 314.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку – приведите правильный вариант
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
[1] Далее при разборе задачи используется язык Паскаль, который наиболее распространен в школах России.
[2] Источники заданий:
1. Демонстрационные варианты ЕГЭ 2004-2013 гг.
2. Тренировочные и диагностические работы МИОО.
3. Гусева И.Ю. ЕГЭ. Информатика: раздаточный материал тренировочных тестов. — СПб: Тригон, 2009.
4. Крылов С.С., Лещинер В.Р., Якушкин П.А. ЕГЭ-2010. Информатика. Универсальные материалы для подготовки учащихся / под ред. В.Р.
Лещинера / ФИПИ. — М.: Интеллект-центр, 2010.
5. Абрамян М.Э., Михалкович С.С., Русанова Я.М., Чердынцева М.И. Информатика. ЕГЭ шаг за шагом. — М.: НИИ школьных технологий, 2010.
Подписано в печать 02.09.2005. Формат 60×84/16. Бумага документная.
Источник: studopedia.su
Презентация, доклад на тему Решаем С1 по информатике ЕГЭ
Ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие.В неполной форме условного оператора блок-2 пустой (отсутствует); Если условие, записанное внутри ромба, истинно (ответ «да» на вопрос «a=b?»),
- Главная
- Информатика
- Решаем С1 по информатике ЕГЭ
Слайд 1Тема: Исправление ошибок в простой программе с условными операторами ЕГЭ, С1
Морозова О.Г.
Слайд 2Ветвление – это выбор одного из двух возможных вариантов действий в
зависимости от того, выполняется ли некоторое условие.
В неполной форме условного оператора блок-2 пустой (отсутствует);
Если условие, записанное внутри ромба, истинно (ответ «да» на вопрос «a=b?»), выполняются все команды, входящие в блок-1 (ветка «да»), иначе (если условие ложно) выполняются все команды в блоке-2 (ветка «нет»)
Слайд 3Одна команда ветвления может находиться внутри другой, например, так:
На этой схеме
блок-10 выполняется, когда a=b; блок-11 – когда a=b=c, блок-12 – когда a=b, но ac и, наконец, блок-2 – когда ab.
Если блок-12 будет пустой (отсутствует), внутреннее ветвление имеет неполную форму; аналогично, если блок-2 пустой, то внешнее ветвление имеет неполную форму
Слайд 4Задача 1:
Требовалось написать программу, которая вводит с клавиатуры координаты точки на
плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:
var x,y: real;
begin
readln(x,y);
if y>=x then
if y>=0 then
if y
Слайд 51. Условие y>=x истинно выше прямой y=x, то есть в областях
Начнем заполнять таблицу, выписывая истинность каждого из трёх условий.
Слайд 6да
да
да
да
нет
нет
нет
2.Условие y>=0 истинно выше прямой y=0, то есть в областях A,
E, G, однако это условие проверяется только тогда, когда первое условие, y>=x, истинно; поэтому для всех областей, где первое условие неверно (это области C, D, G), сразу в столбце второго условия ставим прочерк (условие не будет проверяться)
Слайд 7да
да
да
да
нет
нет
нет
3. Третье условие выполняется для областей «внутри» параболы, то есть для
E, F, G, D; однако оно проверяется только тогда, когда первые два истинны (для А и Е), в остальных строках ставим прочерк:
Слайд 8да
да
да
да
нет
нет
нет
4.Как следует из текста программы, она выведет что-то на экран только
в том случае, когда выполняются первые два условия и программа выходит на третье: для области А будет выведено «не принадлежит», для области Е – «принадлежит», именно в этих двух случаях программа работает правильно, в остальных – нет:
Слайд 9var x,y: real;
begin
readln(x,y);
if (y =x) or (y>=0)) then
write(‘принадлежит’)
else
write(‘не принадлежит’)
end.
Для того, чтобы доработать программу, проще всего составить одно сложное условие, описывающее всю заштрихованную область
В данном случае удобно представить данную область в виде объединения областей, первая из которых включает области E+G, а вторая – области E+F
область E+G соответствует условию (y>=0) and (y =x) and (y =0) and (y =x) and (y =0) and (y =x) and (y =x) or (y>=0))
Доработанная программа выглядит так:
Слайд 10Задачи для тренировки
Слайд 11Вспомни!
Запись вида a mod b означает остаток от деления a на
b
Запись вида a := b + 2*c + 3; означает «вычислить значения выражения справа от знака присваивания := и записать результат в переменную a»; при этом значения других переменных (кроме a) не изменяются
Для многократного выполнения одинаковых операций используют циклы:
цикл с переменной выполняется N раз, в этом примере переменная i принимает последовательно все значения от 1 до N с шагом 1:
for i:=1 to N do begin
< что-то делаем >
end;
цикл с условием выполняется до тех пор, пока условие в заголовке цикла не нарушится:
while < условие >do begin
< что-то делаем >
end;
Слайд 12Задача 1
Требовалось написать программу, которая вводит с клавиатуры координаты точки на
плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она: var x, y: real;
begin
readln(x, y);
if y = -2 then
if x+y = 0 и объединить все 4 условия с помощью операции И (в паскале – and) в одно сложное условие в одном условном операторе:
var x, y: real;
begin
readln(x, y);
if (y =0) then
write(‘принадлежит’)
else
write(‘не принадлежит’);
End.
Последовательно выполните следующее:
Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.
Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Слайд 13Задача 2
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное
число N, не превосходящее 109, и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно:
var N: longint;
digit, min_digit: integer;
begin
readln(N);
min_digit := 0;
while N > 0 do begin
digit := N mod 10;
if digit > min_digit then
min_digit := digit;
N := N div 10;
end;
writeln(min_digit);
end.
ОТВЕТ
1) При вводе числа 532 программа выводит 5.
2) Ошибка 1: начальное значение переменной min_digit
строка: min_digit := 0;
исправление: min_digit := 9; (любое значение, большее или равное 9)
Ошибка 2: условие изменения переменной min_digit
строка: if digit > min_digit then
исправление: if digit
Слайд 14 Требовалось написать программу, при выполнении которой с клавиатуры считывается координата
точки на прямой (х – действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно.
var x: real;
begin
readln(x) ;
if x>l then
if x>=7 then
if x>13 then
write(‘не принадлежит’)
else
write(‘принадлежит’)
End.
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям.
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям.
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Слайд 15Требовалось написать программу, при выполнении которой с клавиатуры считываются коорди наты
точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Ученик написал такую программу:
var x, y: real;
begin
readln(x,у);
if у >= x*x-6 then begin
if x*x + у* у = 0 then
write(‘принадлежит’)
else write(‘не принадлежит’)
end.
При проверке работы программа выполнялась по шагам для некоторых контрольных значений х и у, при этом был заполнен протокол тестирования. В результате неаккуратного обращения протокол был испорчен, частично сохранились только четыре строки.
Графы протокола содержат следующую информацию.
Область — часть плоскости, которой принадлежит проверяемая точка. (Все возможные области отмечены на рисунке буквами А, В, С, . S.)
Условие 1, Условие2, Условие 3 — результат проверки соответствующего условия (да или нет). Если условие не проверялось, в протокол записывался прочерк.
Вывод – сообщение, которое вывела программа. Если программа ничего не вывела, в протокол записывался прочерк.
Верно — итоговое заключение (да или нет) о правильности результата работы программы при данных значениях х и у.
Ответ:
if (y>=x*x-6) and (x*x+y*y =x*x-6) and (y= =0)
then write(‘принадлежит’)
else write(‘не принадлежит’);
Источник: shareslide.ru