В предыдущих программах, мы рассматривали простейшие условия, состоящие из одного оператора отношения. Теперь, давайте рассмотрим программу, которая проверяет, принадлежит ли точка с координатой х, заданному промежутку оси х (-10; 10].
Листинг 5.10
#include <stdio.h>
int main(void)
{
float x;
printf("Vvedite x");
scаnf("%f", &x);
if (x>-10)
{
if (x<=10)
{
printf("x prinadlegit promegytku\n");
}
else
{
printf("x ne prinadlegit promegytku\n");
}
}
else
{
printf("x ne prinadlegit promegytku\n");
}
return (0);
}
Эта программа состоит из двух вложенных условий. Для того, чтобы точка находилась в промежутке (-10;10] она должна быть больше -10, и меньше или равна 10. В нашей программе мы использовали два вложенных условия. Но ту же задачу можно решить и с помощью одной конструкции if. Для этого, для записи сложного условия, нужно применить логические операторы. Их всего несколько:
!(условие) – оператор логическое НЕ. Отрицает условие. Если условие было истина, оно становится ложным, если было ложным становится истинным.
(условие1) && (условие2) - оператор логическое И. Возвращает истину если оба условия истинны. Иначе возвращает ложь.
(условие1) || (условие2) - оператор логическое ИЛИ. Возвращает истину, если хотя бы одно из условий истинно или оба сразу истинны. Иначе ложь.
А нашем случае есть два условия (x>-10) (x<=10) если выполняется и первоеИ второе, то точка попадает в промежуток, иначе нет.
Если использовать логический оператор, то программу можно переписать следующим образом:
Листинг 5.11
#include <stdio.h>
int main(void)
{
float x;
printf("Vvedite x");
scаnf("%f", &x);
if ((x>-10) && (x<=10))
{
printf("x prinadlegit promegytku\n");
}
else
{
printf("x ne prinadlegit promegytku\n");
}
return (0);
}
Как видите, запись программы стала более компактна и легче для понимания.