СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


Задания
Версия для печати и копирования в MS Word
Задание 24 № 16827

Дано целое положительное число N ≥ 10. Необходимо найти наименьшую сумму двух соседних цифр в десятичной записи N. Например, для N = 2018 нужно получить ответ 1, а для N = 2030 ответ 2. Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

 

 

БейсикPython

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

n = int(input())

m = 10

while n >= 10:

    d1 = n // 10

    d2 = n // 10 % 10

    s = d1 + d2

    if s < m:

        m = s

    n //= 10

print(m)

ПаскальАлгоритмический язык

var n,m,d1,d2,s: integer;

begin

    readln(n);

    m := 10;

    while n >= 10 do begin

        d1 := n div 10;

        d2 := n div 10 mod 10;

        s := d1 + d2;

        if s < m then

            m := s;

        n := n div 10

    end;

    writeln(m);

end.

алг

нач

    цел n,m,d1,d2,s

    ввод n

    m := 10

    нц пока n >= 10

        d1 := div(n,10)

        d2 := mod(div(n,10),10)

        s := d1 + d2

        если s < m

            то m := s

        все

        n := div(n,10)

    кц

    вывод m

кон

С++

#include <iostream>

using namespace std;

int main(){

    int n,m,d1,d2,s;

    cin >> n;

    m = 10;

    while (n >= 10) {

        d1 = n / 10;

        d2 = n / 10 % 10;

        s = d1 + d2;

        if (s < m)

            m = s;

        n /= 10;

    }

    cout << m;

    return 0;

}

 

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе N = 2018.

2. Приведите пример числа N, при котором программа выведет верный ответ. Укажите этот ответ.

3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

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

Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

Решение.

1. При вводе N = 2018 программа выведет число 4.

2. Примеры чисел, при вводе которых программа выводит верные ответы: 22 (ответ 4), 240 (ответ 4), 480 (ответ 8), 82 (ответ 10).

3. Программа содержит две ошибки.

1) Неверная инициализация минимума. Минимальная сумма двух цифр может оказаться больше 10. Начальное значение минимума должно быть не меньше 18.

2) Неверно определяется последняя цифра. Вместо неё вычисляется число, которое получается при вычёркивании последней цифры из записи N.

 

Пример исправления для языка Паскаль:

 

Первая ошибка:

m := 10;

Исправленная строка:

m := 18;

Допускается вместо 18 использовать любое число, которое больше 18.

 

Вторая ошибка:

d1 := n div 10;

Исправленная строка:

d1 := n mod 10;

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

Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков после содержательной части исправления (например, точки с запятой в C++).