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


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

Дано натуральное число N > 10, в десятичной записи которого нет нулей. Необходимо определить минимальное двузначное число, которое можно увидеть в десятичной записи N. Например, для N=1984 нужно получить результат 19, а для N = 271 828 — результат 18.

Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.

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

 

БейсикPython

DIM N, K AS INTEGER

INPUT N

K = 100

WHILE N > 100

  IF N MOD 100 < K THEN

    K = N MOD 100

  END IF

  N = N \ 100

WEND

PRINT K

END

n = int(input())

k = 100

while n > 100:

    if n%100 < k:

        k = n%100

    n = n // 100

print(k)

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

var n, k: integer;

begin

  read(n);

  k := 100;

  while n > 100 do begin

    if n mod 100 < k

      then k := n mod 100;

    n := n div 100;

  end;

  writeln(k)

end.

алг

нач

  цел n, k

  ввод n

  k := 100

  нц пока n > 100

    если mod(n,100) < k

      то k:=mod(n,100)

    все

    n:=div(n,100)

  кц

  вывод k

кон

Си++

#include <iostream>

using namespace std;

int main(){

    int n, k;

    cin >> n;

    k = 100;

    while (n > 100) {

      if (n%100 < k)

        k = n%100;

      n = n/100;

    }

    cout « k « endl;

    return 0;

}

 

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

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

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

3. Найдите в программе все ошибки (их может быть одна или несколько).

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

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

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

Решение.

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

2. Примеры чисел, при вводе которых программа выводит верный ответ: 1815 (ответ 15), 475 612 (ответ 12).

Комментарии для экспертов. Из-за ошибки в программе не все пары соседних цифр рассматриваются как возможные двузначные числа. Обрабатываются только те пары, правее которых расположено чётное число цифр, кроме пары в начале числа. Например, в числе 87 654 321 рассматриваются только пары 21, 43, 65. Сравнение в программе организовано верно, поэтому верный ответ выдаётся в том случае, когда пара цифр, образующая самое маленькое число, расположена на местах, попадающих в обработку.

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

1) неверное условие цикла;

2) неверное изменение величины N.

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

Первая ошибка: while n > 100 do begin

Исправленная строка: while n > 10 do begin

Вместо сравнения с 10 возможно сравнения с 0 или любым другим числом, меньшим 10. Вместо строгого сравнения возможно нестрогое. Возможно также сравнение с числом 11, но в этом случае обязательно нестрогое (n>=11).

Вторая ошибка: n := n div 100;

Исправленная строка: n := n div 10;

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

Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков и служебных слов после содержательной части исправления

Источник: Тренировочная работа по ИНФОРМАТИКЕ 11 класс 30 сентября 2016 года Вариант ИН10103