dima0218687
?>

Внатуральном числе 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. найдите в программе все ошибки (известно, что их не более двух). для каждой ошибки выпишите строку, в которой она допущена, и эту же строку в исправленном виде. достаточно указать ошибки и их исправления для одного языка программирования. обратите внимание: вам нужно исправить программу, а не написать свою. вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые.

Информатика

Ответы

Лоскутова
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 ...
 
makeeva-nataliya60

var

  A, B, N, i: integer;

 

begin

  N:= 0;  //Обнуляем счетчик

  writeln('Введите числа A и B');

  readln(A, B); //Вводим А и B

  if A < B then  {Если А < B, то печатаем числа начиная с B и заканчивая A, 

иначе наоборот}

    for i:= B downto A do

    begin

      write(i, '  ');  //Печатаем i

      inc(N);  //Увеличиваем счетчик на 1

    end

  else 

    for i:= A downto B do

    begin

      write(i, '  ');

      inc(N);

    end;

  writeln;

  writeln('Количество N этих чисел равно:  ', N);  //Выводим N

end.

Если все правильно, отметь решение как лучшее)

    

msk27

var

  A, B, N, i: integer;

 

begin

  N:= 0;  //Обнуляем счетчик

  writeln('Введите числа A и B');

  readln(A, B); //Вводим А и B

  if A < B then  {Если А < B, то печатаем числа начиная с B и заканчивая A, 

иначе наоборот}

    for i:= B downto A do

    begin

      write(i, '  ');  //Печатаем i

      inc(N);  //Увеличиваем счетчик на 1

    end

  else 

    for i:= A downto B do

    begin

      write(i, '  ');

      inc(N);

    end;

  writeln;

  writeln('Количество N этих чисел равно:  ', N);  //Выводим N

end.

Если все правильно, отметь решение как лучшее)

    

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Внатуральном числе 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. найдите в программе все ошибки (известно, что их не более двух). для каждой ошибки выпишите строку, в которой она допущена, и эту же строку в исправленном виде. достаточно указать ошибки и их исправления для одного языка программирования. обратите внимание: вам нужно исправить программу, а не написать свою. вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые.
Ваше имя (никнейм)*
Email*
Комментарий*