Всего на сайте:
210 тыс. 306 статей

Главная | Информатика

Readln(x);  Просмотрен 46

Begin

a := 0;

b := 0;

Readln(x);

while x > 0 do begin

y := x mod 10;

if y > 3 then a := a + 1;

if y < 8 then b := b + 1;

x := x div 10

End;

Writeln(a);

Writeln(b)

End.

Решение:

1) видим, что в последней строке выводятся на экран переменные a и b, поэтому сначала нужно определить, что они обозначают в программе

2) перед началом цикла переменные a и b обнуляются

3) на каждом шаге цикла при выполнении некоторых условий переменные a и b увеличиваются на 1, то есть представляют собой счётчики

4) увеличение переменных зависит от значения y = x mod 10, то есть от последней цифры числа

5) если последняя цифра числа больше 3, увеличивается счётчик a, если меньше 8 – счётчик b;

6) в конце каждого шага цикла операция x:=x div 10 отсекает последнюю цифру в десятичной записи числа

7) цикл заканчивается, когда перестаёт выполняться условие x > 0, то есть, когда все цифры исходного числа отброшены

8) таким образом, делаем вывод: после завершения цикла в переменной a находится количество цифр, больших 3, в десятичной записи числа, а в переменной b – количество цифр, меньших 8

9) если было выведено 4 и 2, то в числе 4 цифры больше 3 и 2 цифры меньше 8

10) так как число пятизначное, есть 4 + 2 – 5 = одна цифра, которая больше 3 и меньше 8 одновременно; она должна быть минимальной, поэтому эта цифра 4

11) для того чтобы число было минимальным, ещё одна цифра должна быть минимальной и меньшей 3 – это старшая 1, и три цифры минимальные из цифр, больших или равных 8, то есть три цифры 8

12) ответ: 14888.

Ещё пример задания:

P-05. Ниже записан алгоритм. Сколько существует таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 12?

var x, a, b: integer;

Begin

readln(x);

a:=0; b:=0;

while x>0 do begin

a:=a + 1;

b:=b + (x mod 10);

x:=x div 10;

End;

Предыдущая статья:P ×A → Q ×A Следующая статья:Writeln(a); write(b);
page speed (0.2295 sec, direct)