Дана программа:
x:=-2; y:=-1; if (x<0) and (...) then a:=x else a:=y*2;
Нам нужно, чтобы результатом стало a = -2. Рассмотрим два случая:
if истинно: Тогда a присваивается значение x, то есть -2. Это достигается, если x < 0 (что верно, так как x = -2) И условие (...) истинно.if ложно: Тогда выполняется else, и a := y * 2. Так как y = -1, то a = -1 * 2 = -2. Это происходит, если условие x < 0 ложно ИЛИ условие (...) ложно.Поскольку нам нужно, чтобы a стало -2, и в случае истинности if (присваивается x) и в случае ложности if (вычисляется y*2), нам нужно найти такое условие (...), которое будет истинным, чтобы получить a = -2. Истинным является условие, когда a присваивается x, то есть -2.
Рассмотрим предложенные варианты для (...):
x < y: -2 < -1 — истинно. В этом случае a = x = -2.x < 10: -2 < 10 — истинно. В этом случае a = x = -2.y > 0: -1 > 0 — ложно. В этом случае a = y * 2 = -1 * 2 = -2.y < 0: -1 < 0 — истинно. В этом случае a = x = -2.Все варианты приводят к a = -2. Однако, если трактовать задачу как поиск единственно верного условия, которое *необходимо* добавить, то нужно учитывать, что если условие в if будет ложным, то a все равно станет -2. Если же мы хотим, чтобы a стало -2 именно через ветку then, то нам нужно, чтобы дополнительное условие было истинным. Варианты 1, 2, 4 делают так, что a присваивается x. Вариант 3 делает так, что a присваивается y*2.
Наиболее логичным является случай, когда мы хотим, чтобы a стало -2 через ветку then. Для этого дополнительное условие должно быть истинным. Все варианты 1, 2, 4 являются истинными. Однако, если выбрать вариант 3) y > 0, то условие if (x<0) and (y>0) будет ложным, так как y>0 ложно. В этом случае выполнится ветка else, и a станет y*2 = -1*2 = -2. Этот вариант также приводит к нужному результату.
Если бы нам нужно было, чтобы a стало -2 только в одном из случаев, тогда выбор был бы очевиден. Поскольку оба пути приводят к -2, мы выбираем тот, который делает условие if ложным, чтобы показать, что else тоже работает. Или наоборот, выбрать истинное условие.
Смотрим на варианты. Если выбрать 1, 2, или 4, то a станет -2. Если выбрать 3, то a станет -2. Задание просит условие, которое *необходимо добавить*. Предполагается, что x < 0 уже есть. Если добавить y > 0, то все условие if станет ложным, и a станет -2. Если добавить x < y, то if станет истинным, и a станет -2.
Учитывая, что x=-2 и y=-1, оба варианта x<0 и y<0 истинны, а xy>0 ложен.
Если мы добавляем условие, чтобы a стало -2, и мы знаем, что x < 0 уже истинно, то для того, чтобы a стало x, дополнительное условие должно быть истинным. Например, x < y. Тогда a станет -2. Если же мы хотим, чтобы a стало -2 через ветку else, то все условие if должно быть ложным. Это произойдет, если (x<0) and (...) будет ложным. Поскольку x<0 истинно, то (...) должно быть ложным. Из предложенных вариантов ложным является y > 0. В этом случае a = y*2 = -1*2 = -2.
Наиболее вероятно, что требуется условие, при котором срабатывает ветка else, т.к. ветка then и так присваивает -2. Это y > 0.
Ответ: 3) y>0