Said

Решение заданий B7

Recommended Posts

  • операции целочисленного деления (div) и взятия остатка (mod)
  • как работают операторы присваивания, циклы и условные операторы в языке программирования

Ниже записана программа. Получив на вход число х , эта программа печатает два числа, L и M. Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

readln(x);

L:=0; M:=0;

while x
>
0 do begin

L:=L+1;

if M < (x mod 10) then begin

M:=x mod 10;

end;

x:= x div 10;

end;

writeln(L); write(M);

end.

Решение
:
  1. для решения задачи необходимо понять, что делает эта программа

  2. если это не видно сразу, можно выполнить ручную прокрутку для какого-то простого числа.

  1. можно догадаться, что в результате работы программы в переменной L окажется число цифр числа, а в переменной M – наибольшая цифра, но это предположение нужно постараться доказать

  2. нужно вспомнить (и запомнить), что для целого числа остаток от деления на 10 (x mod 10) – это последняя цифра в десятичной записи числа, а целочисленное деление (x div 10) отсекает последнюю цифру, то есть из 123 получается 12

  3. рассмотрим цикл, число шагов которого зависит от изменения переменной x:

while
x
> 0
do
begin

...

x
:=
x
div
10; { отсечение последней цифры }

end
;

здесь оставлены только те операторы, которые влияют на значение
x
  1. из приведенного цикла видно, что на каждом шаге от десятичной записи x отсекается последняя цифра до тех пор, пока все цифры не будут отсечены, то есть x не станет равно 0; поэтому цикл выполняется столько раз, сколько цифр в десятичной записи введенного числа

  2. на каждом шаге цикла переменная L увеличивается на 1:

225]
L:=L+1;

25]других операторов, меняющих значение
L
, в программе нет; поэтому после завершения цикла
в переменной
L действительно находится количество цифр
  1. теперь разберемся с переменной M, которая сначала равна 0; оператор, в котором она меняется, выглядит так:

if M < (x mod 10) then begin

M:=x mod 10;

end;

учитывая, что
x
mod
10
– это последняя цифра десятичной записи числа, получается что если эта цифра больше, чем значение M, она записывается в переменную M;
  1. этот оператор выполняется в цикле, причем выражение x mod 10 по очереди принимает значения всех цифр исходного числа; поэтому после завершения циклам в переменной M окажется наибольшая из всех цифр, то есть наша догадка подтверждается

  2. итак, по условию задачи фактически требуется найти наибольшее трехзначное число со старшей цифрой 7; очевидно, что это 777.

  3. ответ: 777.
  4. учтите в этих задачах часто просят вывести минимальное или максимальное возможное число, поэтому не удивляйтесь, если у вас получится несколько ответов.

1. Ниже записана программа, которая получив на вход x, печатает два числа L и M. Укажите наибольшее из таких чисел x, при вводе которых программа печатает сначала 3, а потом 8.

DIM x, L, M as INTEGER

INPUT x

L=0

M=0

WHILE x>0

L=L+1

IF x MOD 2 =0 THEN

M = M + x MOD 10

x=x10

END IF

LOOP

PRINT L, M

800

№2. Ниже записана программа, которая получив на вход x, печатает два числа L и M. Укажите наибольшее из таких чисел x, при вводе которых программа печатает сначала 3, а затем 10.

DIM x, L, M as INTEGER

INPUT x

L=0

M=0

WHILE x>0

L=L+1

IF (M<x) AND (x MOD 2 =1) THEN

M = (x MOD 10) *2

x=x10

END IF

LOOP

PRINT L, M

959

Share this post


Link to post
Share on other sites
Guest ivany4   
Guest ivany4

цикл выполняется [b]только раз[/b], сколько цифр в десятичной записи введенного числа


поправьте : должно быть столько раз

Share this post


Link to post
Share on other sites
Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, .
Ответить в теме...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Загрузка...

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу