Чему будет равно значение переменной c в результате выполнения фрагмента программы a: =125; b: =25; c: =12; if a div 25=0 then if a mod 12=0 then c: =b div (a mod c) else c: =a div (b mod c); 1) 0; 2) 1; 3) 12; 4) 125.

Mandarini123443 Mandarini123443    3   23.06.2019 15:10    0

Ответы
21alex1488 21alex1488  02.10.2020 09:22
Сначала переменные a,b,c получат значения.
Значением условного выражения (a div 25) = 0 будет False (ложно), поскольку 125 / 5 = 5, а не 0.
Следовательно, в первом условном операторе должен выполняться код в блоке, стоящий после ключевого слова else, если таковое имеется.
Рассмотрим фрагмент программы, как он записан:

if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c)
else c:=a div (b mod c);

Отступы придумали не зря: они понимать логику программы.
Мы видим ДВА if, ДВА then и только ОДНО else. Какому же if оно сопоставляется?
Другими словами, какая из двух следующих конструкций правильная?

if a div 25=0 then
    if a mod 12=0 then c:=b div (a mod c) else c:=a div (b mod c);

if a div 25=0 then
    if a mod 12=0 then c:=b div (a mod c)
else c:=a div (b mod c);

Правила языка Паскаль легко позволяют разрешить проблему: ключевое слово else связывается с ближайшим к нему предшествующим if, не имеющим else.

Следовательно, верно первое из толкований, т.е. первый if ветки с else не имеет. Поэтому значение переменной с не изменится, оставшись равным 12.

ответ: 12

Замечание.
А как сделать, чтобы выполнялась логика второй конструкции? Очень просто: использовать блок.

if a div 25=0 then
    begin if a mod 12=0 then c:=b div (a mod c) end
else c:=a div (b mod c);
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика