Задание 6 Вариант 1 Самостоятельная работа 3 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Требовалось написать программу, при выполнении которой с клавиатуры вводится целочисленная координата x точки на прямой и определяется принадлежность этой точки одному из выделенных отрезков (включая границы).
Программист торопился и написал программу с ошибками:
var х: real;
begin
readin(х);
if х >= -5 then
if x <= 10 then
if x < 5 then write(‘принадлежит’) else write(‘не принадлежит’)
end.
Выясните, как работает программа при значениях х, принадлежащих областям А, В, С, D, Е.
Анализ программы проведите, заполнив таблицу:
| Область | Условие х >= −5 | Условие х <= 10 | Условие х < 5 | Сообщение программы | Корректность сообщения |
|---|
Предложите свой вариант программы, исключающий случаи её неправильной работы.
На рисунке выделены два отрезка: $$[-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.


