Комментарии к заданию
Программа должна выполнять следующие действия:
-
Вычислять логическое выражение с операцией or для двух точек и выводить координаты точки и вычисленное значение.
-
Вычислять логическое выражение с операцией and для двух точек и выводить координаты точки и вычисленное значение.
-
Вычислять логическое выражение с операцией xor для двух точек и выводить координаты точки и вычисленное значение.
-
Вычислять логическое выражение для логической формулы из правой колонки таблицы для двух точек и выводить координаты точки и вычисленное значение.
-
Вводить координаты точек с соответствующих рисунков следует дважды: для “ИСТИНЫ” (точка попала в заштрихованную область) и “ЛЖИ” (точка не попала в заштрихованную область). Если точки выбраны правильно, результаты вычислений должны соответствовать предсказаниям.
Пример
Рассмотрим три неравенства: x ≥ 0, y ≥ 0, y ≥ x.
Графическая интерпретация неравенств и запись на C соответствующих отношений показана в таблице:
|
x≥0 |
y ≥ 0 |
y ≥x |
|
|
|
|
|
x >= 0 |
y >= 0 |
y >= x |
Соединив отношения логическими операциями or и and, получим логические выражения:
x >= 0.0 or y >= 0.0 or y >= x истинно для точек в I или II или IV квадрантах или выше прямой y=x
x >= 0.0 and y>=0.0 and y>=x истинно для точек в I квадранте и выше прямой y = x
Графическая интерпретация этих выражений и координаты двух точек, выбранных для or, и двух для and представлены в таблице:
|
Логическое сложение “или” (or) |
Логическое умножение “и” (and) |
|
|
|
|
TRUE (-1,1); FALSE (-0.5,-1) |
TRUE (0.5,1); FALSE (1,-1) |
Программа
// «Вычисление логических выражений», вариант №
// студент группы № Дуопроцессоров П. К.
#include <stdio.h>
#include <iso646.h>
//#define stdout Out // отладка программы с выводом на экран (stdout)
#define A x >= 0.0 // неравенство А
#define B y >= 0.0 // неравенство В
#define C y >= x // неравенство С
int main(void)
{
double y,x; // объявлены все переменные
FILE *Out; //указатель на файл с результатами
Out = fopen("L2_Out.txt","w"); // открыть файл с результатами
printf( "\aor true x="); scanf("%lf",&x);
printf( "y="); scanf("%lf",&y);
fprintf(stdout, "or truex=%f\n",x);
fprintf(stdout, " y=%f\n",y);
fprintf(stdout, "or true=%i\n",
A or B or C );
//копируем предыдущие 6 строк и заменяя в них true на false, получаем новые 6 строк
printf( "\aor false x="); scanf("%lf",&x);
printf( "y="); scanf("%lf",&y);
fprintf(stdout, "or falsex=%f\n",x);
fprintf(stdout, " y=%f\n",y);
fprintf(stdout, "or false=%i\n",
A or B or C );
//теперь копируем предыдущие и заменяем or на and, and на xor, xor на формулу
fclose(Out); // закрыть файл с результатами
return 0;
}





