Перейти к содержанию

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

Даны два целых положительных числа 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)