15. Запишите спецификацию вывода вещественного числа в экспоненциальном виде с точностью 4 знака после десятичной точки.
16. Запишите спецификацию вывода вещественного числа в виде с фиксированной точкой с точностью 2 знака после десятичной точки.
17. Запишите оператор вывода вещественной переменной M в виде с фиксированной точкой с точностью 3 знака после десятичной точки.
18. Запишите оператор вывода вещественной переменной D3 в экспоненциальном виде с минимальным размером поля вывода 8 символов и точностью 1 знак после десятичной точки.
18.4 Лабораторная работа №4. Операторы ветвления и логические выражения
Цель: изучить операторы условия, операции отношения, логические операции и выражения.
Порядок выполнения работы:
− изучить оператор ветвления if (параграф 13.1), операции отношения (параграф 12.2) и логические операции (параграф 12.4);
− составить логическое выражение для определения точки, принадлежащей фигуре;
− разработать блок-схему;
− составить тексты программ на языке Cи;
− проверить правильность выполнения разработанной программы;
− составить отчет.
Логические выражения используются не только для решения задач булевой алгебры, но и для изменения порядка выполнения программы в операторах ветвления и циклах. Причем последний вариант использования логических выражений применяется наиболее часто.
Логические выражения состоят из логических констант, переменных и операция отношения, соединенных логическими операциями. В простейших случаях в операторах используют только операции отношения: >, >=, <, <=, ==, !=, например i > 20. Но иногда возникают задачи, требующие использования более сложных логических выражений.
Пример
На плоскости задана фигура (рисунок 42). Необходимо определить принадлежит введенная точка с координатами (x, y) фигуре или нет.

Рисунок 42 — Пример задания к лабораторной работе №4
Для составления логического выражения сначала необходимо составить уравнения прямых и окружностей, из которых состоит фигура.
Формула окружности имеет вид:
,
где (
,
) — координаты центра окуржности,
— радиус.
Уравнение прямой имеет вид:
,
где (
,
) и (
,
) — координаты двух точек, принадлежащих прямой.
Либо можно вопользоваться уравнением
, где
— угол наклона прямой по отношению к оси
, а
— точка пересеения с осью
. Для этого составляется система уравнений:

и решается относительно
и
.
Если прямая параллельна оси
, то ее уравнение
, а если параллельна оси
, то
, где
и
— точки пересечения прямой с осью
или
соответственно.
Таким образом, для заданной фигуры имеем следующие уравнения:
1)
,
2)
,
3)
,
4)
,
5)
.
Точка принадлежит фигуре если она находится (внутри окружности (1) ИЛИ ниже прямой (3) И ниже прямой (4) И выше прямой (5)) И снаружи окружности (2).
Группа отношений, объединенных логической операцией ИЛИ, заключена в скобки, т. к. операция ИЛИ (аналог сложения) имеет более низкий приоритет чем операция И (аналог умножения).
Исходя из составленного логического выражения, запишем неравенства:
1)
,
2)
,
3)
,
4)
,
5)
.
Теперь запишем логическое выражение на языке Си с учетом с использованием логических операций И — &&, ИЛИ — || (см. 12.4):
(sqr(x – 2) + sqr(y – 1) < sqr(3) || y < 3 * x + 8 && y < -3.0/2 * x + 3 + 1.0/2 && y > -4) && sqr(x) + sqr(y + 1) > sqr(2) |
Обратите внимание: чтобы не произошло округления при делении целых чисел, одно из них записывается в вещественном виде с добавлением фиктивной дробной части «.0». Примечание: разбивка логического выражения по строкам и отступы сделаны для удобства чтения данного выражения.
Листинг 19 — Лабораторная работа №4
/* lab4.c – лабораторная работа №4. */ #include <stdio. h> #include <locale. h> #include <conio. h> #define sqr(x) ((x) * (x)) int main() { float x, y; setlocale(LC_ALL, “”); /* ввод координат */ printf(“Введите координаты x и y: ”); scanf(“%f %f”, &x, &y); printf(“Введенная точка (%.1f, %.1f) “, x, y); /* проверка логического выражения */ if ( (sqr(x – 2) + sqr(y – 1) < sqr(3) || y < 3 * x + 8 && y < -3.0/2 * x + 3 + 1.0/2 && y > -4) && sqr(x) + sqr(y + 1) > sqr(2) ) printf(“принадлежит фигуре”); else printf(“не принадлежит фигуре”); getch(); return 0; } |
На рисунке 43 приведено соответствие программы и блок-схемы.

Рисунок 43 — Составление блок-схемы программы lab4.c
Для проверки правильности работы программы необходимо выполнить ее несколько раз, задавая точки из различных областей как принадлежащих, так и не принадлежащих фигуре (см. рисунок 44).

Рисунок 44 — Выбор точек для проверки фигуры
Для приведенного примера можно использовать следующий набор точек:
,
,
,
,
— принадлежат фигуре;
,
,
,
,
,
— не принадлежат фигуре.
На рисунке 45 представлены результаты многократного выполнения программы lab4.exe. Для этого после успешной компиляции исходного текста программы в среде Dev-C++ нужно запустить командную строку, перейти в рабочую папку (команда cd <полный путь к папке>), запускать программу при помощи команды lab4 или lab4.exe. При этом результаты предыдущих запусков программы сохраняются в окне командной строки.

Рисунок 45 — Результаты выполнения lab4.exe
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |


