задания №24

№ 24 (ИНФ2016_01)

На обработку поступает положительное целое число, не превышающее 109 . Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. 

var N, digit, sum: longint;
begin
readln(N);
sum := 0;
while N > 0 do begin
        digit := N mod 10;
        if digit < 7 then
                sum := sum + 1;
        N := N div 10;
end;
writeln(digit)
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 358


№ 24 (ИНФ2016_02)

Требовалось написать программу, при выполнении которой с клавиатуры считывается целое число N, не превосходящее 109 , и выводится произведение его цифр. Программист торопился и написал программу неправильно.

var N,p: longint;
begin
readln(N);
p := 0;
while N >= 10 do begin
     p:=p * (N mod 10);
     N := N div 10;
end;
writeln(p);
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 213


№ 24 (ИНФ2016_03)

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109 , и выводится количество цифр в десятичной записи этого числа. Программист торопился и написал программу неправильно.

var N: longint;
      k: integer;
begin
readln(N);
k := 0;
while N > 1 do begin
        k:=k + N mod 10;
        N := N div 10;
end;
writeln(k);
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 123

 


№ 24 (ИНФ2016_04)

Дано целое положительное число N. Необходимо определить наименьшее целое число K, для которого выполняется неравенство:
1 + 2 + … + K > N.
Программист написал программу неправильно. 

var N, K: integer;
begin
read(N);
K := 1;
while N>0 do begin
     N := N - K;
     K := K + 1;
end;
writeln(K)
end.

Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 5.
2. Приведите пример числа N, при вводе которого программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

В поле ответ введите только то, что выведет эта программа при вводе числа 5


№ 24 (ИНФ2016_05)

Даны целые положительные числа M и N. Необходимо определить количество таких целых чисел K, для которых выполняется неравенство M ≤ K2 ≤ N.

var m, n, k, r: integer;
begin
read(m, n);
k := 1;
r := 1;
while k*k < n do begin
        if k*k >= m then
               r := r+1;
        k := k + 1;
end;
writeln(r)
end.

Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе M = 10 и N = 30.
2. Приведите пример таких чисел M и N, при вводе которых программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

В поле ответ введите только то, что выведет эта программа при вводе чисел 10 30


№ 24 (ИНФ2016_06)

Дано натуральное число N > 10, в десятичной записи которого нет нулей. Необходимо определить минимальное двузначное число, которое можно увидеть в десятичной записи N. Например, для N=1392 нужно получить результат 13, а для N = 251 921 – результат 19. Программист написал программу неправильно. 

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.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 3758


№ 24 (ИНФ2016_07)

Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех нечетных цифр; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 19515. Число, в котором все цифры чётные, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно. Программист написал программу неправильно.

var N, R, T: longint;
d: integer;
begin
readln(N);
R:=0;
T:=1;
while N>0 do begin
        d := N mod 10;
        if d mod 2=0 then begin
              R := R + d*T;
              T := T+1
        end;
        N := N div 10;
end;
writeln(T);
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 431


№ 24 (ИНФ2016_08)

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма нечётных цифр этого числа. Программист написал программу неправильно.

var N: longint;
sum, d: integer;
begin
readln(N);
sum := 1;
while N > 0 do begin
        d := N mod 10;
        N := N div 10;
        if d mod 2<>0 then
              sum := sum + N mod 10;
end;
writeln(sum);
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 3125


№ 24 (ИНФ2016_09)

Даны натуральные числа N и M. Требуется найти такое минимально возможное натуральное число K ≥ N, чтобы сумма всех натуральных чисел от N до K была больше или равна M: N + (N+1) + (N+2) + ... + K ≥ M
Программист написал программу неправильно.

var n, m, sum, k: integer;
begin
read(n,m);
sum := 1;
k := n;
while sum <= m do begin
      k := k+1;
      sum := sum+k;
end;
writeln(k)
end.

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

В поле ответ введите только то, что выведет эта программа при вводе чисел 5 и 8


(ИНФ2016_10)

Даны натуральные числа N и M. Требуется найти такое минимально возможное натуральное число K ≥ N, чтобы сумма всех натуральных чисел от N до K была больше M: N + (N+1) + (N+2) + ... + K > M
Программист написал программу неправильно.

var n, m, sum, k: integer;
begin
read(n,m);
sum := 1;
k := n;
while sum < m do begin
      k := k+1;
      sum := sum+k;
end;
writeln(k)
end.

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

В поле ответ введите только то, что выведет эта программа при вводе чисел 2 и 8


№ 24 (ИНФ2016_11)

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, больше 10 и не превосходящее 109, и выводится сумма первой и последней цифр этого числа. Программист написал программу неправильно.

var a,b,d,x,y:longint;
begin
    read(x);
    y:=x;
    d:=10;
    repeat
       d:=d*10;
       y:=y div 10;
    until y>0;
    a:=x div d;
    b:=x mod 10;
    writeln(a+b);
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 1256


№ 24 (ИНФ2016_12)

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, больше 10 и не превосходящее 109, и выводится сумма цифр в числе х, кроме первой и последней цифр этого числа. Программист написал программу неправильно.

var x,y,sum:longint;
begin
   read(x);
   y:=x;
   sum:=0;
   repeat
      sum:=sum+x mod 10;
      y:=y div 10;
   until y<1;
   sum:=sum-x mod 10;
   writeln(sum);
end.

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

В поле ответ введите только то, что выведет эта программа при вводе числа 125


№ 24 (Демонстрационный вариант ЕГЭ по информатике 2018 года)

На обработку поступает натуральное число, не превышающее 109 . Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 5. Если в числе нет цифр, кратных 5, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на разных языках программирования.

Напоминание: 0 делится на любое натуральное число.

Бейсик

DIM N, DIGIT, MAXDIGIT AS LONG
INPUT N
MAXDIGIT = N MOD 10
WHILE N > 0
      DIGIT = N MOD 10
      IF DIGIT MOD 5 = 0 THEN
              IF DIGIT > MAXDIGIT THEN
                     MAXDIGIT = DIGIT
              END IF
      END IF
N = N \ 10
WEND
IF MAXDIGIT = 0 THEN
      PRINT "NO"
ELSE
      PRINT MAXDIGIT
END IF

Python

N = int(input())
maxDigit = N % 10
while N > 0:
     digit = N % 10
     if digit % 5 == 0:
           if digit > maxDigit:
                  maxDigit = digit
     N = N // 10
if maxDigit == 0:
     print("NO")
else:
     print(maxDigit)

С++

#include
using namespace std;
int main() {
    long N, digit, maxDigit;
    cin >> N;
    maxDigit = N % 10;
    while (N > 0) {
            digit = N % 10;
            if (digit % 5 == 0)
                  if (digit > maxDigit)
                            maxDigit = digit;
           N = N / 10;
     }
if (maxDigit == 0)
      cout << "NO" << endl;
else
      cout << maxDigit << endl;
return 0;
}

Паскаль

var N,digit,maxDigit: longint;
begin
readln(N);
maxDigit := N mod 10;
while N > 0 do
begin
     digit := N mod 10;
     if digit mod 5 = 0 then
          if digit > maxDigit then
                 maxDigit := digit;
     N := N div 10;
end;
if maxDigit = 0 then
    writeln('NO')
else
    writeln(maxDigit)
end.

Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 132.

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

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

В поле ответ введите только ответ на 1 вопрос!


№ 24 (Демонстрационный вариант ЕГЭ по информатике 2016 года)

На обработку поступает положительное целое число, не превышающее 109 . Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

Бейсик

DIM N, DIGIT, SUM AS LONG
INPUT N
SUM = 0
WHILE N > 0
     DIGIT = N MOD 10
     IF DIGIT < 7 THEN
             SUM = SUM + 1
     END IF
     N = N 10
WEND
PRINT DIGIT

Python

N = int(input())
sum = 0
while N > 0:
       digit = N % 10
       if digit < 7:
                sum = sum + 1
       N = N // 10
print(digit)

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

алг
нач
цел N, digit, sum
ввод N
sum := 0
нц пока N > 0
          digit := mod(N,10)
          если digit < 7 то
                  sum := sum + 1
          все
          N := div(N,10)
кц
вывод digit
кон

Паскаль

var N, digit, sum: longint;
begin
readln(N);
sum := 0;
while N > 0 do
begin
      digit := N mod 10;
      if digit < 7 then
              sum := sum + 1;
      N := N div 10;
end;
writeln(digit)
end.

Си
#include <stdio.h>
int main()
{
int N, digit, sum;
scanf("%d", &N);
sum = 0;
while (N > 0)
{
        digit = N % 10;
        if (digit < 7)
                sum = sum + 1;
        N = N / 10;
}
printf("%d",digit);
return 0;
}

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

В поле ответ введите только ответ на первый вопрос!


№ 24 (Демонстрационный вариант ЕГЭ по информатике 2017 года)

Дано целое положительное число N, не превосходящее 1000. Необходимо определить, является ли это число степенью числа 3. То есть требуется определить, существует ли такое целое число K, что 3K = N, и вывести это число либо сообщение, что такого числа не существует.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа оказалась неверной. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования.

 

Бейсик

DIM N, K AS INTEGER
INPUT N
K = 0
WHILE K MOD 3 = 0
K = K + 1
N = N \ 3
WEND
IF N > 0 THEN
PRINT K
ELSE
PRINT "Не существует"
END IF
END

Python

n = int(input())
k = 0
while k%3 == 0:
        k = k + 1
        n = n // 3
if n > 0:
       print(k)
else:
       print("Не существует")

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

алг
нач
цел n, k
ввод n
k := 0
нц пока mod(k, 3)=0
k := k + 1
n := div(n,3)
кц
если n > 0
то вывод k
иначе вывод "Не существует"
все
кон

Паскаль

var n, k: integer;
begin
read(n);
k := 0;
while k mod 3 = 0 do begin
      k := k + 1;
      n := n div 3;
end;
if n > 0 then
       writeln(k)
else
       writeln('Не существует')
end.

Си
#include
int main(){
int n, k;
scanf("%d",&n);
k = 0;
while (k%3 == 0) {
     k = k + 1;
     n = n / 3;
}
if (n > 0)
     printf("%d", k);
else
     printf("Не существует");
return 0;
}

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

В поле ответ введите только ответ на первый вопрос!


№ 24 (Демонстрационный вариант ЕГЭ по информатике 2015 года)

На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной
последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на разных языках программирования.

Бейсик

CONST n = 4
count = 0
maximum = 999
FOR I = 1 TO n
       INPUT x
       IF x mod 2 <> 0 THEN
             count = count + 1
             IF x > maximum THEN
                    maximum = I
             END IF
       END IF
NEXT I
IF count > 0 THEN
      PRINT count
      PRINT maximum
ELSE
      PRINT "NO"
END IF

Python

n = 4
count = 0
maximum = 999
for i in range(1, n + 1):
      x = int(input())
      if x % 2 != 0:
             count += 1
             if x > maximum:
                    maximum = i
if count > 0:
      print(count)
      print(maximum)
else:
      print("NO")

Си

#include
int main(void)
{
const int n = 4;
int i, x, maximum, count;
count = 0;
maximum = 999;
for (i = 1; i <= n; i++) {
      scanf("%d",&x);
      if (x % 2 != 0) {
            count++;
            if (x > maximum)
                   maximum = i;
      }
}
if (count > 0) {
      printf("%d\n", count);
      printf("%d\n", maximum);
}
else
      printf("NO\n");
}

Паскаль

const n = 4;
var i, x: integer;
var maximum, count: integer;
begin
count := 0;
maximum := 999;
for i := 1 to n do
begin
     read(x);
     if x mod 2 <> 0 then
     begin
           count := count + 1;
           if x > maximum then
                  maximum := i
     end
end;
if count > 0 then
begin
     writeln(count);
     writeln(maximum)
end
else
     writeln('NO')
end.

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

В поле ответ ничего не вводите. Правильный ответ можно проверить нажав кнопку "Разбор"


Вариант построен по материалам сайта distan-school.ru

Ответы:

Ответ
ИНФ2016_01:3
ИНФ2016_02:0
ИНФ2016_03:5
ИНФ2016_04:4
ИНФ2016_05:3
ИНФ2016_06:58
ИНФ2016_07:2
ИНФ2016_08:6
ИНФ2016_09:7
ИНФ2016_10:5
ИНФ2016_11:18
ИНФ2016_12:10
Демонстрационный вариант ЕГЭ по информатике 2018 года:2
Демонстрационный вариант ЕГЭ по информатике 2016 года:4
Демонстрационный вариант ЕГЭ по информатике 2017 года:1
Демонстрационный вариант ЕГЭ по информатике 2015 года:0