
лабы / Laba_varik1_7.1
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский
технический
университет
связи
и
информатики»
Кафедра «Информатика»
Лабораторная работа №7 - Проект 1
«Разработка проекта, решающего задачу
принадлежности или непринадлежности точки с
заданными координатами геометрической фигуре»
по теме
«Логические данные и выражения.
Операторы разветвления VС++. Программная реализация
базовых разветвляющихся структур и
типовых алгоритмов»
по дисциплине
«Информатика»
Выполнил:
Проверил:
Москва, 2021 г.
1) Индивидуальное задание
Вариант 1: Заданы две простых фигуры: квадрат с центром в начале координат со стороной 2 и вписанная окружность. Попадет ли заданная точка с координатами X, Y в следующую фигуру: квадрат без круга.
2) Формализация и уточнение задачи.
Построены «вручную» описанная в постановке задаче фигура, которая определяет область попадания точки в заданную геометрическую фигуру
(рисунок 1.1).
Рисунок 1.1 – Вписанный в квадрат круг, данный в задании.
Для того, чтобы выполнялось условие, при котором задаваемая точка принадлежит квадрату – необходимо, чтобы по обеим осям модули координат были не больше 1, следовательно:
Для того, чтобы выполнялось условие, при котором задаваемая точка не принадлежит кругу – можно использовать формулу:
.
Так как круг по условию вписан в квадрат, крайние точки которого равны 1 и -1, вписанный в него круг имеет радиус R = 1. Таким образом мы получаем новое условие:
3) Разработка схем алгоритмов
Схема алгоритма otvet решения задачи, использующая стандартное разветвление и сложное логическое выражение.
Рисунок 7.1.2 - Схема алгоритма функции, использующей
стандартное разветвление и сложное логическое выражение.
4) Разработка программного проекта
#include <cmath>
bool otvet(float X, float Y)
{
if ((abs(X)) < 1 && (abs(Y)) < 1)
{
if (pow(X, 2) + pow(Y, 2) > 1)
{
return 1;
}
}
else
{
return 0;
}
}
#include <iostream>
float X, Y;
void vvod(float& x, float& y)
{
setlocale(LC_ALL, "rus");
std::cout << "Введите координаты X и Y: " << std::endl;
std::cin >> x;
std::cin >> y;
X = x;
Y = y;
}
void vivod (bool otvet)
{
setlocale(LC_ALL, "rus");
std::cout << "Ваша точка с координатами - " << X << ", " << Y << " ";
if (!otvet) std::cout << "не ";
std::cout << "соответсвует условиям задачи";
}
#include <iostream>
#include <cmath>
void vvod(float& X, float& Y);
void vivod(bool otvet);
bool otvet(float X, float Y);
int main()
{
bool otv;
float X, Y;
vvod(X, Y);
vivod(otvet(X, Y));
return 0;
}
Рисунок 7.1.3 – Программный код проекта.
5) Выполнение разработанного проекта
Получены результаты выполнения проекта, приведенные на рисунках 7.1.4 и 7.1.5, для тестовых данных точек, попадающих и не попадающих в заданную область.
Рисунок 7.1.4 - Результаты выполнения проекта для тестовых данных
точки, попадающей в заданную область.
Рисунок 7.1.5 – Результаты выполнения проекта для тестовых данных
точки, не попадающей в заданную область.
6) Доказательство правильности результата
Тестовые данные для контрольного решения, проверяющие попадание и непопадание точки с различными координатами в заданную область, выполнил проверку работоспособности проекта во встроенном калькуляторе в Windows 10, в режиме построения графиков. Результаты проверки удовлетворяющих и не удовлетворяющих исходных данных, а также результата изображены на рисунках 7.1.6 и 7.1.7 соответственно:
Рисунок 7.1.6 – Результат проверки с исходными данными,
которые удовлетворяют условия задачи.
Рисунок 7.1.7 – Результат проверки с исходными данными,
которые не удовлетворяют условия задачи.
7) Источники:
Лекция 30.11.2021