Сайт Богданова Дмитрия Валериевича

Задание №1702/24

Задание

Требовалось написать программу, которая по входному натуральному числу \(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;

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

Подробнее...
Добавить комментарий
Комментарии (0)