Задание 6 Вариант 1 Самостоятельная работа 3 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Программист торопился и написал программу с ошибками:
var х: real;
begin
readin(х);
if х > =-5 then
if x < =10 then
if x < 5 then
write(’принадлежит’)
else
write('не принадлежит')
end.
Выясните, как работает программа при значениях х, принадлежащих областям А, В, С, D, Е. Анализ программы проведите, заполнив таблицу:
Область
Условие х > = —5
Условие х < = 10
Условие х < 5
Сообщение программы
Корректность сообщения
Предложите свой вариант программы, исключающий случаи её неправильной работы.
Из-за неправильной структуры вложенного условного оператора программа не выдает сообщения, если не выполняется первое или второе условие.
program s3_v1_6;
var
x: integer;
begin
readln(x);
if (x > = -5) and (x < = 0) or (x > = 5) and (x < = 10) then writeln('принадлежит')
else writeln('не принадлежит ')
end.
На рисунке выделены два отрезка: $$[-5;0]$$ и $$[5;10]$$. Нужно проверить, как работает данная программа для областей $$A, B, C, D, E$$.
| Область | Условие $$x \ge -5$$ | Условие $$x \le 10$$ | Условие $$x < 5$$ | Сообщение программы | Корректность сообщения |
|---|---|---|---|---|---|
| A | — | — | — | ||
| B | + | + | + | принадлежит | + |
| C | + | + | + | принадлежит | — |
| D | + | + | — | не принадлежит | — |
| E | + | — | — | — |
Из-за неправильной структуры вложенного условного оператора программа не выдаёт сообщение, если не выполняется первое или второе условие.
program s3_v1_6;
var
x: integer;
begin
readln(x);
if (x >= -5) and (x <= 0) or (x >= 5) and (x <= 10) then
writeln(‘принадлежит’)
else
writeln(‘не принадлежит’);
end.
Ответ
Для областей $$B$$ и $$C$$ программа выводит «принадлежит», но в области $$C$$ это неверно. Для областей $$A$$, $$D$$ и $$E$$ программа работает неправильно или не выдаёт нужного сообщения.
Правильный вариант программы:
program s3_v1_6;
var
x: integer;
begin
readln(x);
if ((x >= -5) and (x <= 0)) or ((x >= 5) and (x <= 10)) then
writeln(‘принадлежит’)
else
writeln(‘не принадлежит’);
end.