Recommended Posts

1. Ниже записана программа, которая получив на вход 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

END IF

x=x10

LOOP

PRINT L, M

959

Share this post


Link to post
Share on other sites
Guest aklag   
Guest aklag

различие в решениях из-за понимания IF.

в бейсике end if означает, что х уменьшается в 10 раз если только заходим на IF.

а вот если перенести end if не после x=x10 а сразу после M = (x MOD 10) *2 то

верный ответ 985

Share this post


Link to post
Share on other sites
Guest aklag   
Guest aklag

ivany4, решение верное для Паскаля. На бейсике запись программы все же другая.

и тогда задача получается другая. см. мой пост выше

Share this post


Link to post
Share on other sites
Guest aklag   
Guest aklag

Да, пожалуй, здесь изначально неверно записана задача.

Видимо, из Паскаля переписано на бейсик, и допущена ошибка.

Share this post


Link to post
Share on other sites
Guest ivany4   
Guest ivany4

Паскаль :

var x, L, M, i: integer;

begin

for i:=100 to 999 do

begin

// readln(x);

x:=i;

L:=0; M:=0;

while x > 0 do

begin

L:=L+1;

if (M<x)and(x mod 2=1) then M:=(x mod 10)*2;

x:= x div 10;

end;

if (L=3)and(M=10) then writeln('i=',i,' ',L,' ',M);

end;

end.

Share this post


Link to post
Share on other sites

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


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

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