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




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

Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число N (гарантируется, что 10 ≤ N ≤ 108) и выводится двузначное число, образованное двумя его первыми (старшими) цифрами. Например, при N = 2014 надо вывести 20. Ученик написал такую программу:

 

БейсикПаскаль

DIM N AS LONG

INPUT N

WHILE N>100

N = N MOD 100

WEND

PRINT N

END

var n: longint;

begin

read(n);

while n>100 do begin

n := n mod 100

end;

write(n);

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

int main(){

long int n;

cin >> n;

while (n>100) {

n = n % 100;

}

cout << n;

}

алг

нач

цел n

ввод n

нц пока n>100

n := mod(n,100)

кц

вывод n

кон

Python

n = int(input())

while n > 100:

    n %= 10 0

print(n)

 

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

1. Напишите, что выведет эта программа при вводе числа 2014.

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

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

Решение.

1. При вводе числа 2014 программа выведет число 14. (Комментарий. Приведённая программа выводит ответ 100 для N = 100 и число, образованное двумя последними цифрами, для любого другого значения n.)

2. Пример числа, для которого программа даёт верный ответ: 2020. (Комментарий Программа даст верный ответ для любого числа, у которого общее количество цифр чётно, при этом две первые цифры совпадают с двумя последними, в частности, для любого двузначного числа.)

3. 1) Неверное условие цикла: неравенство должно быть нестрогим, иначе можно в качестве ответа получить 100.

2) Неверно реализовано отбрасывание цифр. Во-первых, вместо нахождения остатка нужно использовать целочисленное деление. Во-вторых, делить надо не на 100, а на 10, то есть отбрасывать цифры не по две, а по одной, иначе при нечётном количестве цифр в числе получится неверный ответ.

 

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

Первая строка с ошибкой: while n>100 do begin. Исправленная строка: while n>=100 do begin. Другой способ исправления: while n>99 do begin.

Вторая строка с ошибкой: n := n mod 100. Исправленная строка: n := n div 10.

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


Аналоги к заданию № 6789: 6821 Все