Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число

Задание

Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число, не превосходящее 108, и выводится его первая (старшая) цифра. Ученик написал такую программу:


var n: longint;
begin
read(n);
while n>10 do begin
  n := n mod 10
end;
write(n);
end.
 

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

Решение

1) При вводе числа 1984 программа выдаст 4. В первом же цикле переменной n присваивается значение 4, больше циклов нет. На выходе n, то есть 4.
2) Программа работает верно для любого числа, у которого старшая цифра равна младшей, в том числе для любого однозначного числа. Например: 5, 55, 555, 777, в этих случаях программа выдаст правильный ответ.
3) * Для начала нужно убрать строгое равенство: Заменить на n>=10
    * n := n mod 10, заменим на n := n div 10, в случае целочисленного деления программа начнет выдавать правильные ответы.


Опубликовано

в

от

Метки:

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *