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