Личный кабинет

Задание 24. Исправление ошибок в программе: все задания

Ответом к заданию по информатике может быть целое число, десятичная дробь (записывайте её через запятую, вот так: 2,5), последовательность цифр или букв (пишите без пробелов: 97531).

1. Задание#T30260

Дано целое положительное число
Необходимо найти и вывести количество и сумму цифр, кратных в десятичной записи Если кратных цифр в числе нет, нужно вывести слово "NO".
Например, для нужно вывести числа (в числе три кратные цифры) и (), а для – слово "NO".
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, D, K, S AS INTEGER
INPUT N
K = 0
S = 0
WHILE N > 10
    D = N MOD 10
    IF D MOD 3 = 0 THEN
        K = K + 1
        S = S + D
    END IF
    N = N \ 10;
WEND
IF S > 0 THEN
    PRINT K, S
ELSE
    PRINT "NO"
END IF
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе
  2. Приведите пример трёхзначного числа содержащего хотя бы одну кратную цифру, при вводе которого программа выведет верный ответ.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса
Это задание решали 3 тыс. раз. С ним справились 86% пользователей.

2. Задание#T30177

Дано целое положительное число
Необходимо найти и вывести количество и сумму чётных цифр в десятичной записи Если чётных цифр в числе нет, нужно вывести слово "NO".
Например, для нужно вывести числа (в числе три чётные цифры) и (), а для – слово "NO".
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, D, K, S AS INTEGER
INPUT N
K = 0
S = 0
WHILE N > 1
    D = N MOD 10
    IF D MOD 2 = 0 THEN
        K = K + 1
        S = D
    END IF
    N = N \ 10;
WEND
IF S > 0 THEN
    PRINT K, S
ELSE
    PRINT "NO"
END IF
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе
  2. Приведите пример трёхзначного числа содержащего хотя бы одну чётную цифру, при вводе которого программа выведет верный ответ.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса
Это задание решали 2 тыс. раз. С ним справились 84% пользователей.

3. Задание#T29797

Дано целое положительное число Необходимо найти наибольшее количество подряд идущих единиц в десятичной записи Например, для нужно получить ответ а для ответ
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, M, K AS INTEGER
INPUT N
M = 0
K = 0
WHILE N >= 10
    IF N MOD 10 = 1 THEN
        K = K + 1
    ELSE
        K = 1
    END IF
    IF K > M THEN
        M = M + 1
    END IF
    N = N \ 10
WEND
PRINT M
Последовательно выполните следующее.
  1. Приведите пример числа при котором программа выведет верный ответ. Укажите этот ответ.
  2. Приведите пример числа при котором программа выведет неверный ответ. Укажите верный ответ и ответ программы.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса
Это задание решали 1 тыс. раз. С ним справились 85% пользователей.

4. Задание#T29768

Дано целое положительное число Необходимо найти наибольшее количество подряд идущих нулей в десятичной записи Например, для нужно получить ответ а для ответ
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, M, K AS INTEGER
INPUT N
M = 0
K = 0
WHILE N >= 10
    IF N MOD 10 = 0 THEN
        K = K + 1
    ELSE
        K = 1
    END IF
    IF K > 0 THEN
        M = K
    END IF
    N = N \ 10
WEND
PRINT M
Последовательно выполните следующее.
  1. Приведите пример числа при котором программа выведет верный ответ. Укажите этот ответ.
  2. Приведите пример числа при котором программа выведет неверный ответ. Укажите верный ответ и ответ программы.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса
Это задание решали 1 тыс. раз. С ним справились 83% пользователей.

5. Задание#T9821

На обработку поступает натуральное число, не превышающее . Нужно написать программу, которая выводит на экран произведение нечётных цифр этого числа. Если в числе нет нечётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
n = int(input())
cnt = 0
p = 1
while n >= 1:
    digit = n % 10
    if digit % 2 == 1:
        cnt += 1
        p *= digit
    n //= 10
if p > 1:
    print(cnt)
else:
    print('NO')
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе числа .
  2. Укажите наименьшее четырёхзначное число, содержащее хотя бы одну нечётную цифру, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
  3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Для каждой ошибки:
  1. выпишите строку, в которой сделана ошибка;
  2. укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

6. Задание#T9805

На обработку поступает натуральное число, не превышающее
Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO».
Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, DIGIT, MINDIGIT AS LONG
INPUT N
MINDIGIT = N MOD 10
WHILE N > 0
  DIGIT = N MOD 10
  IF DIGIT MOD 2 = 0 THEN
    IF DIGIT < MINDIGIT THEN
      MINDIGIT = DIGIT
    END IF
  END IF
  N = N \ 10
WEND
IF MINDIGIT = 0 THEN
  PRINT "NO"
ELSE
 PRINT MINDIGIT
END IF 
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе числа
  2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
  3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
  1. выпишите строку, в которой сделана ошибка;
  2. укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Показать разбор
Это задание взято из демовариантов ФИПИ 2018-2020
Это задание решали 6 тыс. раз. С ним справились 28% пользователей.

7. Задание#T8655

Дано натуральное число не превышающее Необходимо вывести разницу между максимальной и минимальной цифрой в этом числе.
Программист написал программу, которая иногда работает не правильно. Ниже эта программа для Вашего удобства приведена на разных языках программирования.
DIM n AS INTEGER
DIM d AS INTEGER
DIM min AS INTEGER
DIM max AS INTEGER
INPUT N
min = 0: max =  0
WHILE n > 9
 d = n MOD 10
 IF d < min THEN min = d
 IF d > max THEN max = d
 n = n / 10
WEND
PRINT max - min
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе числа .
  2. Приведите пример такого натурального числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
  3. Найдите допущенные программистом ошибки и исправьте их.
Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Для каждой ошибки:
  1. выпишите строку, в которой сделана ошибка;
  2. укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Показать разбор
Это задание решали 3 тыс. раз. С ним справились 20% пользователей.

8. Задание#T4916

Дано целое положительное число . Необходимо найти наименьшую сумму двух соседних цифр в десятичной записи . Например, для нужно получить ответ , а для ответ .
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N,M,D1,D2,S AS INTEGER
INPUT N
M = 10
WHILE N >= 10
    D1 = N  10
    D2 = N  10 MOD 10
    S = D1 + D2
    IF S < M THEN
        M = S
    END IF
    N = N  10
WEND
PRINT M
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе .
  2. Приведите пример числа , при котором программа выведет верный ответ. Укажите этот ответ.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки, из-за которых программа может выдать неверный ответ: за исправления, внесённые в любые другие строки, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса

9. Задание#T4889

Дано целое положительное число . Необходимо найти наибольшую сумму двух соседних цифр в десятичной записи . Например, для нужно получить ответ , а для ответ .
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N,M,D1,D2,S AS INTEGER
INPUT N
M = 0
WHILE N >= 10
    D1 = N MOD 10
    D2 = N MOD 100
    S = D1 + D2
    IF S > M THEN
        M = S
    END IF
    N = N  100
WEND
PRINT M
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе .
  2. Приведите пример числа , при котором программа выведет верный ответ. Укажите этот ответ.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки, из-за которых программа может выдать неверный ответ: за исправления, внесённые в любые другие строки, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса

10. Задание#T4862

Факториалом натурального числа (обозначается ) называется произведение всех натуральных чисел от до . Например, .
Дано целое положительное число . Необходимо найти ближайшее к число, которое является точным факториалом какого-либо натурального числа. Если два точных факториала одинаково близки к , нужно выбрать меньший из них.
Например, для нужно получить ответ , а для – ответ .
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM A, K, F AS INTEGER
INPUT A
K = 0
F = 1
WHILE F <= A
  K = K + 1
  F = F * K
WEND
IF F - A > A - FK THEN
  F = FK
  K = K - 1
END IF
PRINT K
END
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе .
  2. Приведите пример числа , при котором программа выведет верный ответ. Укажите этот ответ.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса

11. Задание#T4835

Факториалом натурального числа (обозначается ) называется произведение всех натуральных чисел от до . Например, .
Дано целое положительное число . Необходимо найти ближайшее к число, которое является точным факториалом какого-либо натурального числа. Если два точных факториала одинаково близки к , нужно выбрать меньший из них.
Например, для нужно получить ответ , а для – ответ .
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM A, K, F AS INTEGER
INPUT A
K = 1
F = 1
WHILE F < A
  K = K + 1
  F = F * K
WEND
IF F - A >= FK - A THEN
  F = FK
END IF
PRINT K
END
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе .
  2. Приведите пример числа , при котором программа выведет верный ответ. Укажите этот ответ.
  3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Показать разбор
Это задание составили эксперты «СтатГрада» для Яндекса

12. Задание#T1930

На обработку поступает натуральное число, не превышающее . Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, DIGIT, MINDIGIT AS LONG 
INPUT N 
MINDIGIT = N MOD 10 
WHILE N > 0 
  DIGIT = N MOD 10 
  IF DIGIT MOD 2 = 0 THEN 
    IF DIGIT < MINDIGIT THEN 
      MINDIGIT = DIGIT 
    END IF 
  END IF 
  N = N  10 
WEND 
IF MINDIGIT = 0 THEN 
  PRINT «NO» 
ELSE 
  PRINT MINDIGIT 
END IF
Последовательно выполните следующее.
  1. Напишите, что выведет эта программа при вводе числа .
  2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
  3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Для каждой ошибки:
  1. выпишите строку, в которой сделана ошибка;
  2. укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Показать разбор
Это задание взято из демовариантов ФИПИ 2018-2020
0 баллов сегодня
дней без пропуска

0
пт
0
сб
0
вс
0
пн
0
вт
0
ср
0
чт