Вариант № EGE_INF_1702
Добавлен 25 мая 2017 г. в 0:12. Изменён 9 июня 2018 г. в 20:09.Скачать PDFЗадание
Требовалось написать программу, которая по входному натуральному числу \(n\), не превосходящему \(10^{4}\), определяла и печатала количество различных делителей этого числа (включая единицу и само число \(n\)). Приведённая ниже программа содержит ошибки.
-
Копировать
var n, j, k : integer; begin read(n); j := 2; k := 0; while j * j > n do begin if n mod j = 0 then k := k + 2; j := j + 1 end; if j * j = n then k := k + 3; write(k) end.
-
Копировать
#include <stdio.h> void main() { int n, j, k; scanf("%d", &n); j = 2; k = 0; while (j * j > n) { if (n % j == 0) k += 2; j++; } if (j * j == n) k += 3; printf("%d", k); }
-
Копировать
DIM N, J, K AS INTEGER INPUT N J = 2 K = 0 WHILE J * J > N IF N MOD J = 0 THEN K = K + 2 END IF J = J + 1 WEND IF J * J = N THEN K = K + 3 END IF PRINT K
-
Копировать
n = int(input()) j = 2 k = 0 while j * j > n : if n % j == 0 : k += 2 j += 1 if j * j == n : k += 3 print(k)
Последовательно выполните следующее.
1) Напишите, что выведет эта программа при вводе числа 10.
2) Укажите два наименьших значения входной переменной \(n\), при которых программа выведет верный ответ.
3) Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание: необходимо исправить приведённую программу, а не написать свою. Требуется заменить только ошибочные строки, но нельзя удалять строки или добавлять новые. За исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Решение
Подробнее...Ответ
1) При входном значении \(n=10\) программа выведет число 2.
2) Программа выведет правильный ответ, равный 3, при входных значениях \(n=4\) и \(n=9\).
3) Программа содержит две ошибки: неверную инициализацию переменной \(j\) и неверное увеличение счётчика \(k\).
Пример исправления на языке Паскаль
Первая ошибка | |
Строка, содержащая ошибку | Исправленная строка |
j := 2; | j := 1; |
Вторая ошибка | |
Строка, содержащая ошибку | Исправленная строка |
k:= k + 3; | k:= k + 1; |
В программах на других языках ошибочные строки и их исправления аналогичны.
Подробнее...