• В натуральном числе N (0 < N < 109) необходимо подсчитать количество цифр десятичной записи, чётность которых совпадает с чётностью последней цифры числа N. Например, для N = 123 должен получиться ответ 2 (последняя цифра числа нечётная, а всего в записи числа две нечётные цифры: 1 и 3). Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная. Ниже эта программа приведена на языке паскаль:
    var N, k, d: integer;
    begin
    read(N);
    k := 0;
    d := N mod 2;
    while N > 1 do begin
    if N mod 10 = d
    then k := k + 1;
    N := N div 10
    end;
    writeln(k)
    end.
    Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе N = 1961. 2. Назовите минимальное N, большее 100, при котором программа выведет верный ответ. 3. Найдите в программе все ошибки (известно, что их не более двух). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые.

Ответы 2

  • Огромное спасибо выручили из бяды!
  • 1. В переменную d записывается остаток от деления числа 2, который совпадает с остатком от деления последней цифры на 2; k инициализируется нулем. Затем, пока N > 1, последняя цифра числа сравнивается с d, и если она совпадает с d, k увеличивается на 1. После сравнения последняя цифра отбрасывается. Результат подсчета выводится на экран.Итак программа вычисляет количество цифр, совпадающих с остатком от деления последней цифры на 2 без учета первой цифры, если она 1.N = 1961: будет выведено 1 (первая единица не в счет, кроме неё в числе остается только одна единица)2. N от 101 до 109 не подойдут: если число четное, не будет учтена последняя цифра, если нечетное – то первая.N = 110 подходит: будет выведено 1.3. Ошибки ясны из описания в пункте 1: сравниваются не остаток от деления и d, а цифры и d; если первая цифра 1, она не учитывается.Исправления:while N > 1 ... надо поменять на while N > 0 ...if N mod 10 = d ... надо поменять на if N mod 2 = d ... 
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years