Чему будет равно значение переменной c в итоге исполнения куска

Чему будет одинаково значение переменной 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.

Задать свой вопрос
1 ответ
Сначала переменные 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.

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

Ответ: 12

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

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);


Курыкина Олеся
Столько исправлений: окно непрерывно запирается, теснее два месяца не могут исправить (((
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт