Запишите на языке Pascal логическое выражение, имеющее значение true при выполнении указанного условия и false в противном случае. Результат вычисления выражения присвойте логической переменной `F`.


1) `a` делится на `42`, но не делится на `70`.

2) Точка `(x, y)` находится внутри III квадранта, а `z` целое число.

3) В трёхзначном числе есть не более `2` одинаковые цифры.

4) Точки (x1, y1), (x2, y2), (x3, y3) лежат на одной окружности.

5) `x` или двухзначное простое число или трёхзначное чётное.


Ziorar: Вот, в виде единого логического выражения для каждого пункта:
1) F := (a mod 42 = 0) and (a mod 70 <> 0);
2) F := (x < 0) and (y < 0) and (z = Int(z));
3) это условие я понимаю как "есть ровно 2 одинаковых цифры"
F := (a mod 111 <> 0) and ((a div 100 = (a div 10) mod 10)or(a div 100 = a mod 10)or((a div 10) mod 10 = a mod 10));
4) F := ((y1-y2)*x3 + (x2-x1)*y3 <> x2*y1-x1*y2);
5) F := (x>9)and(x<100)and(x mod 2<>0)and(x mod 3<>0)and(x mod 5<>0)and(x mod 7<>0) or (x>99)and(x<1000)and(x mod 2=0);
Ziorar: В пунктах 2,4 используются вещественные величины (real), а в остальных- целые (integer). Переменная F -естественно, логического типа (boolean).
Ziorar: В пункте 4, по свойству окружности (через три точки, не лежащие на одной прямой, можно провести окружность, и притом только одну) -получаем, что нужно лишь доказать, что эти три точки не лежат на одной прямой. Это я сделал, используя уравнение прямой через 2 точки (в его общем виде).
Ziorar: Точки конечно могут ещё и совпадать, но это не помешает провести через них окружность.

Ответы

Ответ дал: Ziorar
0

Переменная F - логического типа (boolean). Другие переменные: в пунктах 2,4 - вещественного типа (real), в остальных пунктах- целого типа (integer).

Вот такие логические выражения подойдут:

1) F := (a mod 42 = 0) and (a mod 70 <> 0);

2) F := (x < 0) and (y < 0) and (z = int(z));

3) Видимо, это условие надо понимать как "если есть одинаковые цифры, то не более двух". То есть- или совсем нет одинаковых цифр, или их две (ибо одной одинаковой цифры не бывает- с чем же она тогда одинакова?, а три одинаковых- запрещены). Тогда такое выражение будет:

F := (a > 99) and (a < 1000) and (a mod 111 <> 0);

Хотя, можно понять и так: "точно есть одинаковые цифры, и их не более двух". Другими словами- есть ровно две одинаковых цифры (одной одинаковой цифры не бывает- с чем же она тогда одинакова?). В таком случае, выражение сложнее:

F := (a > 99) and (a < 1000) and (a mod 111 <> 0) and ((a div 100 = (a div 10) mod 10)or(a div 100 = a mod 10)or((a div 10) mod 10 = a mod 10));

4) F := (y1-y2)*x3 + (x2-x1)*y3 + x1*y2-x2*y1 <> 0;

Здесь: по свойству окружности (через три точки, не лежащие на одной прямой, можно провести окружность, и притом только одну) получаем, что нужно лишь доказать, что эти три точки не лежат на одной прямой. Это я и сделал, используя уравнение прямой, проходящей через 2 точки (в его общем виде).

Правда, точки могут ещё и совпадать, и тогда они будут лежать на общей прямой, но это не помешает провести через них окружность! Если учитывать ещё и этот, крайний случай (хотя, в данной задаче не думаю что это обязательно нужно), то выражение придётся ещё усложнить, взяв первое условие в скобки, и добавив к нему "or (x1=x2)and(y1=y2)".  Но, прямых и окружностей в данном случае можно через точки бесконечно много провести (наверное, всё же к данной задаче этот случай не подходит, тут же говорится- лежат на одной окружности, а не на многих).

5) F := (x>9)and(x<100)and(x mod 2<>0)and(x mod 3<>0)and(x mod 5<>0)and(x mod 7<>0) or (x>99)and(x<1000)and(x mod 2=0);

Вас заинтересует