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




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

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

 

 

БейсикPython

DIM N,M,D1,D2,S AS INTEGER

INPUT N

M = 0

WHILE N >= 10

    D1 = N MOD 10

    D2 = N MOD 100

    S = D1 + D2

    IF S > M THEN

        M = S

    END IF

    N = N \ 100

WEND

PRINT M

n = int(input())

m = 0

while n >= 10:

    d1 = n % 10

    d2 = n % 100

    s = d1 + d2

    if s > m:

        m = s

    n //= 100

print(m)

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

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

begin

    readln(n);

    m := 0;

    while n >= 10 do begin

        d1 := n mod 10;

        d2 := n mod 100;

        s := d1 + d2;

        if s > m then

            m := s;

        n := n div 100

    end;

    writeln(m);

end.

алг

нач

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

    ввод n

    m := 0

    нц пока n >= 10

        d1 := mod(n,10)

        d2 := mod(n,100)

        s := d1 + d2

        если s > m

            то m := s

        все

        n := div(n,100)

    кц

    вывод m

кон

С++

#include <iostream>

using namespace std;

int main(){

    int n,m,d1,d2,s;

    cin >> n;

    m = 0;

    while (n >= 10) {

        d1 = n % 10;

        d2 = n % 100;

        s = d1 + d2;

        if (s > m)

            m = s;

        n /= 100;

    }

    cout << m;

    return 0;

}

 

 

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

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

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

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

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

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

Решение.

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

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

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

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

2) Неверный переход к следующим цифрам. Цифры отбрасываются по две, а не по одной, в результате некоторые пары соседних цифр не обрабатываются.

 

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

 

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

d2 := n mod 100;

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

d2 := n mod 100 div 10;

Возможны и другие способы вычисления, например:

d2 := n div 10 mod 10;

Правильным считается любое исправление, которое приводит к верному вычислению нужной цифры.

 

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

n := n div 100

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

n := n div 10

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

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