Читайте также:
|
|
Для закрепления умения применять логические операции полезно научиться выполнять упражнения двух типов:
Такие задачи, в зависимости от того, какие логические операции используются при определении областей, можно классифицировать следующим образом:
· В выражении не используются логические операции. Например, точки первой и третьей четвертей, включая и оси координат, определяется с помощью выражения x*y >=0.
· Используется только операция &&, если область состоит из одной части. Например, точка внутри треугольника с вершинами (1, 1), (0, 0), (-1, 1) определяются так: y > abs(x) && y <=1.
· Используется только операция ||, если область состоит из нескольких относительно несложных частей, для определения каждой из которых достаточно одного неравенства. Например, область, состоящая из левой половины круга радиуса 2 с центром в начале координат, включая и полуокружность, и точек справа от оси OY определяется так: x > 0 || x*x + y*y <=4.
· Используются как операция &&, так и операция ||, если область «склеена» из нескольких частей. Каждая из них определяется с помощью нескольких неравенств, соединенных операцией &&. Например, ту же левую половину круга радиуса 2, включая и его границы, и правую относительно оси OY часть полукольца, образованного окружностями радиусов 2 и 3 с центром в начале координат, можно определить так:
x <= 0 && x*x + y*y <=4 || x >=0 && x*x + y*y >= 4 && x*x + y*y <=9.
· Используется операция отрицание (!), если легче определить область, которой точки не принадлежат, или некоторую часть уже определенной области надо «выбросить» из нее. Например, так легче определить круг радиуса 5 с центром в начале координат, из которого выброшен треугольник с вершинами (1,1) (0, 0) и (-1, 1):
x*x + y*y <= 25 &&! (y >= abs(x) && y <=1).
Область ограничена линиями y = -x, x=0, y=-1. Соответствующее выражение для ее записи: if (y <=x && x >=0 && y >-1) cout << ”YES”; else cout << ”NO”;
Задание. Написать программу, проверяющую, попадает ли точка в область. Результат вывести в виде текстового сообщения.
Область можно описать как круг, пересекающийся с треугольником. Точка может попадать либо в круг, либо в треугольник, либо в их общую часть:
{x2 + y2 <=1} или {х≤0 и y ≤ 0 и y ≥ -x-2}
-2 1
-1
-2
Программа:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{double x, y;
cout << " input x, y" << endl;
cin >> x >> y; // с помощью условного оператора
if ( (x*x +y*y <= 1)|| (x<=0 && y <=0 && y >= -x-2) )
cout << "YES" << endl;
else cout << "NO" << endl;
cin >> x >> y; // с помощью условной тернарной операции
cout <<
((( x*x +y*y <= 1 ) || ( x<=0 && y <=0 && y >= -x-2 ))? "Yes": "No" );
cout <<endl;
_getch();
return 0;
}
Дата добавления: 2015-07-08; просмотров: 154 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Логические выражения и примеры их записи | | | Правила преобразования типов |