Вариант № EGE_INF_1701
Добавлен 18 мая 2017 г. в 0:11. Изменён 24 декабря 2017 г. в 22:53.Скачать PDFЗадание
Числа Фибоначчи задаются рекуррентным соотношением \(f\left(0\right)=0\), \(f\left(1\right)=1\) и \(f\left(n\right)=f\left(n-2\right)+f\left(n-1\right)\) для всех целых \(n\geq 0\). Требовалось написать программу, которая по входному целому неотрицательному значению \(n\), не превосходящему 20, определяет соответствующее число Фибоначчи \(f\left(n\right)\). Приведённая ниже программа содержит ошибки.
-
Копировать
var n, i, f, fn : integer; begin read(n); fn := 1; f := 1; for i := 1 to n do begin f := f + fn; fn := f - fn end; write(fn - 5) end.
-
Копировать
#include <stdio.h> void main() { int n, i, fn, f; scanf("%d", &n); fn = 1; f = 1; for (i = 1; i <= n; i++) { f = f + fn; fn = f - fn; } printf("%d", fn - 5); }
-
Копировать
DIM N, I, F, FN AS INTEGER INPUT N FN = 1 F = 1 FOR I = 1 TO N F = F + FN FN = F - FN NEXT I PRINT FN - 5
-
Копировать
n = int(input()) fn = 1 f = 1 for i in range(1, n + 1) : f = f + fn fn = f - fn print(fn - 5)
Последовательно выполните следующее.
1) Напишите, что выведет эта программа при вводе числа 4.
2) Укажите значение входной переменной \(n\), при котором программа выведет верный ответ.
3) Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание: необходимо исправить приведённую программу, а не написать свою. Требуется заменить только ошибочные строки, но нельзя удалять строки или добавлять новые. За исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Решение
Подробнее...
Ответ
1) При входном значении \(n=4\) программа выведет число 0.
2) Программа выведет правильный ответ, равный 8, только при входном значении \(n=6\).
3) Программа содержит две ошибки: неверную инициализацию переменной \(f\) и неверный вывод результата.
Пример исправления на языке Паскаль
Первая ошибка | |
Строка, содержащая ошибку | Исправленная строка |
f := 1; | f := 0; |
Вторая ошибка | |
Строка, содержащая ошибку | Исправленная строка |
write(fn - 5) | write(f) |
Другой вариант исправления на языке Паскаль
Первая ошибка | |
Строка, содержащая ошибку | Исправленная строка |
fn := 1; | fn := 0; |
Вторая ошибка | |
Строка, содержащая ошибку | Исправленная строка |
write(fn - 5) | write(fn) |
В программах на других языках ошибочные строки и их исправления аналогичны.
Подробнее...