Опубликовано 03.01.2018 по предмету Информатика от Гость

Помогите пожалуйста)Желательно подробно.
Ниже записан алгоритм. Получив на ход число x этот алгоритм , запишет две буквы M,L. Напишите число “x” при котором алгоритм с начало напишет число 2, а потом 8 .
DIM X, L, M AS INTEGER
INPUT X L=0: M=0
WHILE X>0
L=L+1
IF M<(X MOD 10) THEN M=X MOD 10
END IF
X=X/10
WEND
PRINT L, M

в паскале:
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.

Ответ оставил Гость

Смотрим на предназначение переменных L и M:
L - счетчик того, сколько раз выполняется условие цикла (while  x > 0). Т.к. в конце программы L становится равным 2, значит условие цикла (while  x > 0) выполняется 2 раза.
M, судя по условию (if M < x mod 10) - максимальная цифра числа x, т.к. x mod 10 - это остаток от деления числа x на десять.
В конце цикла while x приравнивается x div 10; кроме того, после 2 проходов цикла, x стало равным 0. Это дает нам право считать, что начальное число x было двузначным.
Т.к. в конце программы M становится равным 8, значит максимальная цифра в числе x - это 8.
Значит изначально число x могло быть равно:
18
28
38
48
58
68
78
80
81
82
83
84
85
86
87
88
Т.к. требуется наибольшее, то выбираем 88.

Не нашел нужный ответ?

Если ответ по предмету Информатика отсутствует или он оказался неправильным, то попробуй воспользоваться поиском других ответов во всей базе сайта.


Найти другие ответы
Самые новые вопросы