Задание 24. Анализ программ. Исправление ошибок в коде. ЕГЭ 2020 по информатике

За это задание ты можешь получить 3 балла. На решение дается около 30 минут. Уровень сложности: повышенный.
Средний процент выполнения: 52.2%
Ответом к заданию 24 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).

Задачи для практики

Задача 1

Требовалось написать программу, при выполнении которой с клавиатуры считываются два натуральных числа N и M одинаковой размерности, не превосходящие $10^9$.

Программа должна вычислить произведения первой и последней цифр в каждом из чисел и вывести наименьшее из найденных произведений. Если произведения одинаковы, то одно из них. (Например, для чисел N = 3125,M = 2416 программа должна вывести 12.)

Программист торопился и написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе чисел 102 и 105.

2.Приведите пример двух таких чисел, для которых, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе чисел 102 и 105 программа выведет число 100.

2. Пример входных чисел, для которых программа работает правильно: 28 и 33.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

S:= N div 10; T:= M div 10;

следует заменить на

S:= N mod 10; T:= M mod 10;

2) Строку

if S * N > T * M then

следует заменить на

if S * N < T * M then

Ответ:
Показать решение

Задача 2

Требовалось написать программу, при выполнении которой с клавиатуры считываются два натуральных числа N и M одинаковой размерности, не превосходящие $10^9$. Программа должна вычислять поразрядные суммы цифр этих чисел и вывести на экран наибольшую из полученных сумм. Например, для чисел N = 5296, M = 5471 поразрядные суммы равны 7, 16, 6 и 10. Программа должна вывести 16. Программист написал программу неправильно.

Последовательно выполните следующее:

1. Напишите, что выведет программа при вводе чисел 1456 и 2564.

2.Приведите пример двух таких чисел, для которых, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).

Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе чисел 1456 и 2564 программа выведет число 10.

2. Пример входных чисел, для которых программа работает правильно: 1234 и 1111.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

while (N > 10) do begin

следует заменить на

while (N > 0) do begin

2) Строку

if MaxS < M % 10 + N % 10

следует заменить на

if MaxS < S

Ответ:
Показать решение

Задача 3

Требовалось написать программу, при выполнении которой с клавиатуры считываются два натуральных числа N и M одинаковой размерности, не превосходящие 109. Программа должна вычислить сумму старших разрядов этих чисел, сумму их младших разрядов и вывести наибольшую из найденных сумм. Если суммы одинаковы, то одну из них.

Например, для чисел N = 215, M = 416 программа должна вывести 11. Программист торопился и написал программу неправильно.

Последовательно выполните следующее:

1. Напишите, что выведет программа при вводе чисел 517 и 834.

2.Приведите пример двух таких чисел, для которых, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе чисел 517 и 834 программа выведет число 1.

2.Пример входных чисел, для которых программа работает правильно: 135 и 423.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

S:= (N + M) mod 10;

следует заменить на

S:=N mod 10 + M mod 10;

2) Строку

while N > 0 do begin

следует заменить на

while N > 10 do begin

Ответ:
Показать решение

Задача 4

Требовалось написать программу, при выполнении которой с клавиатуры считывается два натуральных числа N и M одинаковой размерности, не превосходящие $10^9$. Программа должна найти наибольшую цифру в каждом из чисел и вывести на экран сумму найденных цифр.

Например, для чисел N = 216, M = 471 программа должна вывести 13. Программист торопился и написал программу неправильно.

Последовательно выполните следующее:

1. Напишите, что выведет программа при вводе чисел 5426 и 8317.

2.Приведите пример двух таких чисел, для которых, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе чисел 5426 и 8317 программа выведет число 5.

2. Пример входных чисел, для которых программа работает правильно: 1154 и 2531.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

MaxN:=0; MaxM:=0;

следует заменить на

MaxN:=N mod 10; MaxM:=M mod 10;

Ответ:
Показать решение

Задача 5

Требовалось написать программу, при выполнении которой с клавиатуры поступает последовательность из пяти натуральных чисел (некоторые числа могут быть одинаковыми).

Программа должна вывести на экран сумму чётных чисел в исходной последовательности и минимальное из чётных чисел. Если чётных чисел нет, требуется на экран вывести «No».

Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно.

Ниже эта программа для вашего удобства приведена на четырёх языках программирования.

Последовательно выполните следующее:

1. Напишите, что выведет эта программа при вводе последовательности чисел 3 6 11 4 12.

2. Приведите пример такой последовательности, содержащей хотя бы одно чётное число, для которого, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе. Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе последовательности чисел 3 6 11 4 12 программа выведет два числа: 8 и 2.

2. Пример последовательности, содержащей числа, кратные трём, для которой программа работает правильно: 7 2 9 4 13.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строка с ошибкой:

MinX:=2;

Верное исправление:

MinX:=1000;

Ответ:
Показать решение

Задача 6

Требовалось написать программу, при выполнении которой с клавиатуры поступает последовательность из пяти целых чисел (некоторые числа могут быть одинаковыми). Программа должна найти в исходной последовательности произведение нечётных чисел и максимальное нечётное число и вывести найденные числа на экран.

Если нечётных чисел в последовательности нет, требуется на экран вывести «No». Известно, что вводимые числа больше −1000 и меньше, чем 1000. Программист написал программу неправильно.

Ниже эта программа для вашего удобства приведена на четырёх языках программирования.

Последовательно выполните следующее:

1. Напишите, что выведет эта программа при вводе последовательности чисел 2 − 5 − 3 − 4 10.

2. Приведите пример такой последовательности, содержащей хотя бы одно нечётное число, для которой, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе. Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе последовательности чисел 2 − 5 − 3 − 4 10 программа выведет два числа: 15 и 1.

2. Пример последовательности, содержащей нечётные числа, для которой программа работает правильно: 2 5 − 3 − 4 1.

3. Программа содержит три строки с ошибками (Паскаль):

1) Строка с ошибкой:

MaxX:=0;

Верное исправление:

MaxX:=-1000;

2) Строка с ошибкой:

Pr:=MaxX;

Верное исправление:

Pr:=1;

3) Строка с ошибкой:

if Pr <> 0 then begin

Верное исправление:

if MaxX <> -1000 then begin

Ответ:
Показать решение

Задача 7

Требовалось написать программу, при выполнении которой с клавиатуры поступает последовательность из пяти целых чисел (некоторые числа могут быть одинаковыми).

Программа должна найти в исходной последовательности среднее арифметическое чётных чисел и максимальное чётное число и вывести найденные числа на экран. Если чётных чисел в последовательности нет, требуется на экран вывести «No». Известно, что вводимые числа больше −1000 и меньше, чем 1000.

Программист написал программу неправильно. Ниже эта программа для вашего удобства приведена на четырёх языках программирования.

Последовательно выполните следующее:

1. Напишите, что выведет эта программа при вводе последовательности чисел −6 5 − 8 4 2.

2. Приведите пример такой последовательности, содержащей хотя бы одно чётное число, что, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1.При вводе последовательности чисел−6 5 −8 4 2 программа выведет два числа −1.6 и 4.

2. Пример последовательности, содержащей чётные числа, для которой программа работает правильно: 4 − 8 2 − 6 10.

3. Программа содержит три строки с ошибками (Паскаль):

1) Строка с ошибкой:

MaxX:=0;

Верное исправление:

MaxX:=-1000;

2) Строка с ошибкой:

if Sum <> 0 then begin

Верное исправление:

if K > 0 then begin

3) Строка с ошибкой:

writeln(Sum/N:2:1);

Верное исправление:

writeln(Sum/K:2:1);

Ответ:
Показать решение

Задача 8

Требовалось написать программу, при выполнении которой с клавиатуры поступает последовательность из пяти неотрицательных целых чисел (некоторые числа могут быть одинаковыми).

Программа должна вывести на экран сумму чисел, кратных трём, в исходной последовательности и минимальное из чисел, кратных трём. Если чисел, кратных трём, нет, требуется на экран вывести «No». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для вашего удобства приведена на четырёх языках программирования.

Последовательно выполните следующее:

1. Напишите, что выведет эта программа при вводе последовательности чисел 5 6 9 7 12.

2. Приведите пример такой последовательности, содержащей хотя бы одно число, кратное трём, что, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе последовательности чисел 5 6 9 7 12 программа выведет два числа: 27 и 3.

2. Пример последовательности, содержащей числа, кратные трём, для которой программа работает правильно: 7 2 3 5 3.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строка с ошибкой:

MinX:=3;

Верное исправление:

MinX:=1000;

2) Строка с ошибкой:

MinX:= i

Верное исправление:

MinX:= X

Ответ:
Показать решение

Задача 9

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109. Если число чётное, то выводится сумма первой и последней цифр числа, в противном случае выводится первая цифра числа. Программист написал программу неправильно.

Последовательно выполните следующее:

1. Напишите, что выведет программа при вводе каждого из чисел 615 и 214.

2. Приведите пример такого числа, при вводе которого программа, несмотря на ошибки, напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе чисел 615 и 214 программа выведет 5 и 4 соответственно.

2. Пример входного числа, для которого программа работает правильно: 5.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

S = N MOD 10

следует заменить на

S = 0

2) Строку

while N > 0 do

следует заменить на

while N > 10 do

Ответ:
Показать решение

Задача 10

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109. Программа должна выводить на экран количество цифр, больших 4, и наибольшее из этих цифр. Если число не содержит цифр, больших 4, то требуется на экран вывести «No». Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 5687.

2. Приведите пример такого числа, что программа напечатает неверный ответ.

3. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.)

Решение

1. При вводе числа 5687 программа выведет два числа 4 и 5.

2. Пример входного числа, для которого программа работает правильно: 7534.

3. Программа содержит следующие строки с ошибками (Паскаль):

1) Строку if VAL > K then

следует заменить на if VAL > MAX then

2) Строку if MAX > 0 then begin

следует заменить на if MAX > 4 then begin

Ответ:
Показать решение

Задача 11

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109.

Программа должна выводить на экран количество цифр введённого числа, меньших 6, и минимальное из этих цифр. Если число не содержит цифр, меньших 6, то требуется на экран вывести «No». Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 4357.

2. Приведите пример такого числа, для которого, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 4357 программа выведет два числа: 12 и 3.

2. Пример входного числа, для которого программа работает правильно: 718.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

K:= K+VAL;

следует заменить на

K:= K+1;

2) Строку

if MIN > 0 then begin

следует заменить на

if K > 0 then begin

Ответ:
Показать решение

Задача 12

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа, не превосходящих 5. Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 4715.

2. Приведите пример такого числа, что, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 4715 программа выведет 4.

2. Пример входного числа, для которого программа работает правильно: 7468.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

if VAL < 5 then

следует заменить на

if VAL <= 5 then

2) Строку

S:=VAL

следует заменить на

S:=S+VAL

Ответ:
Показать решение

Задача 13

Даны два целых положительных числа N и K (0 < N < 1000, 0 < K < N). Необходимо определить, является ли K наибольшим из чисел, для которых сумма 1+ 2+ · · ·+K ≤ N. Программа должна вывести или «Да», или «Нет» и найденное наибольшее из чисел, для которых сумма чисел 1+2+· · ·+K ≤ N.Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе чисел N = 10, k = 3.

2. Приведите пример таких чисел, для которых, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе чисел N = 10, k = 3 программа выведет Нет. k=5.

2. Пример входных чисел, для которых программа работает правильно: 7 и 4.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

s:=s+k

следует заменить на

s:=s+t

2) Строку

writeln(’Нет. k=’, t)

следует заменить на

writeln(’Нет. k=’, t-1)

Ответ:
Показать решение

Задача 14

Требовалось написать программу, которая определяет, является ли введённое число x факториалом какого-либо числа i (т. е. i! = x), и выводит число i или "no". Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 9.

2. Приведите пример такого числа, для которого, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 9 программа выведет 4.

2. Пример входного числа, для которого программа работает правильно: 6.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

m := m + i;

следует заменить на

m := m * i;

2) Строку

if x<> i then

следует заменить на

if x = m then then

Ответ:
Показать решение

Задача 15

Дано целое положительное число N (0 < N < 1000). Необходимо определить, является ли это число некоторой степенью числа 6 (N = $6^k$). Программа должна найти и вывести или число k — показатель степени, или сообщение, что такого числа не существует. Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 6.

2.Приведите пример такого числа, которое является степенью числа 6, и, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 6 программа выведет 2.

2. Пример входного числа, для которого программа работает правильно: 36.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

k := 1;

следует заменить на

k := 0;

2) Строку

k := k + (n mod 6);

следует заменить на

k := k + 1;

Ответ:
Показать решение

Задача 16

Дано целое положительное число N (0 < N < 1000). Необходимо определить, является ли это число некоторой степенью числа 2 (N = $2^k$). Программа должна найти и вывести или число k — показатель степени, или сообщение, что такого числа не существует. Программист написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 7.

2. Приведите пример такого числа, для которого, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 7 программа выведет 2.

2. Пример входного числа, для которого программа работает правильно: 4.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

while n div 2 <> 0 do

следует заменить на

while n mod 2 = 0 do

2) Строку

if k <> 0 then

следует заменить на

if n=1 then

Ответ:
Показать решение

Задача 17

Требовалось написать программу, при выполнении которой с клавиатуры поступает последовательность из пяти неотрицательных целых чисел.

Программа должна найти в исходной последовательности сумму чисел, не превосходящих 30 и кратных 7, вывести найденное число на экран.

Если чисел, не превосходящих 30 и кратных 7, в последовательности нет, требуется на экран вывести NO. Известно, что вводимые числа меньше 1000.

Программист написал программу неправильно. Ниже эта программа для вашего удобства приведена на четырёх языках программирования.

Последовательно выполните следующее:

1. Напишите, что выведет эта программа при вводе последовательности чисел 1 7 14 49 2.

2. Приведите пример такой последовательности, содержащей хотя бы одно чётное число, для которой, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1.При вводе последовательности чисел 1 7 14 49 2 программа выведет No.

2. Пример последовательности, для которой программа работает правильно: 1 2 3 4 5.

3. Программа содержит следующие ошибки (Паскаль):

1) Строку:

X:=X+K

следует заменить на:

K:=X+K

2) Строку:

writeln(X)

следует заменить на:

writeln(K)

Ответ:
Показать решение

Задача 18

Требовалось написать программу, при выполнении которой с клавиатуры поступает последовательность из пяти неотрицательных целых чисел. Программа должна найти в исходной последовательности минимальное и максимальное чётное число и вывести найденные числа на экран.

Если чётных чисел в последовательности нет, требуется на экран вывести NO. Известно, что вводимые числа меньше 1000.

Программист написал программу неправильно. Ниже эта программа для вашего удобства приведена на четырёх языках программирования.

Последовательно выполните следующее:

1. Напишите, что выведет эта программа при вводе последовательности чисел 3 2 8 7 4.

2. Приведите пример такой последовательности, содержащей хотя бы одно чётное число, для которого, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы.

(Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

Решение

1.При вводе последовательности чисел 3 2 8 7 4 программа выведет два числа: 2 и 4.

2. Пример последовательности, содержащей чётные числа, для которой программа работает правильно: 1 2 4 5 6.

3. Программа содержит следующие ошибки (Паскаль):

1) Строки:

if x < MinX then MinX:=X

else MaxX:= X

следует заменить на:

if X < MinX then MinX:=X;

if X < MaxX then MaxX:=X;

2) Строку:

if MinX <> 0 then begin

следует заменить на:

if MinX <> 1000 then begin

Ответ:
Показать решение

Задача 19

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная нечётная цифра этого числа. (Гарантируется, что число содержит хотя бы одну нечётную цифру.) Программист торопился и написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 713.
2. Приведите пример такого числа, для которого, несмотря на ошибки, программа напечатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 713 программа выведет 9.

2. Пример входного числа, для которого программа работает правильно: 925.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

MAX:=9;

следует заменить на

MAX:=0;

2) Строку

while N > 10 do

следует заменить на

while N > 0 do

Ответ:
Показать решение

Задача 20

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа, кратная 3. (Гарантируется, что число содержит хотя бы одну цифру, кратную 3.) Программист торопился и написал программу неправильно.

Последовательно выполните следующее.

1. Напишите, что выведет программа при вводе числа 1136.

2. Приведите пример такого числа, для которого, несмотря на ошибки, программа напечатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько).Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,— приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание, что требуется найти ошибки в данной программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Решение

1. При вводе числа 1136 программа выведет 9.

2. Пример входного числа, для которого программа работает правильно: 94.

3. Программа содержит две строки с ошибками (Паскаль):

1) Строку

VAL:= N mod 3;

следует заменить на

VAL:= N mod 10;

2) Строку

MIN:= N;

следует заменить на

MIN:= VAL;

Ответ:
Показать решение
Показать еще

Готовим к ЕГЭ на 85+ баллов и побеждаем лень

Каждый месяц 12 онлайн-занятий в дружелюбной атмосфере + 16 домашних работ с жесткими сроками.
Не готовишься — вылетаешь.

Подробнее о курсе