лабы / Laba_varik20_7.1
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №7.1
«Разработка проекта, решающего задачу принадлежности или непринадлежности с заданными координатами геометрической фигуре»
по дисциплине
«Информатика»
Выполнил:
Проверил:
Москва, 2021 г.
Содержание
Описание индивидуального задания……………………………………...2
Формализация и уточнение задания………………………………………2
Разработка схем алгоритмов………………………..……………………..3
Разработка программного кода проекта……………………………….....5
Выполнение разработанного проекта…………………………………….7
Доказательство правильности результата………..………………………8
Описание индивидуального задания
Заданы две простых фигуры: правая полуокружность радиуса 1 с центром в начале координат и дуга, соединяющая две крайние точки полуокружности ((0,1), (0,-1)) как часть окружности с центром в точке (-1,0) и радиусом корень из 2. Попадет ли точка с координатами Х, У в «молодой» полумесяц.
Формализация и уточнение задания
Построена «вручную», описанная в индивидуальном задании фигура (рис.1):
Рисунок 1
Окружность А - x*x+y*y<=1
Окружность B – (x+1)*(x+1)+y*y>=2
Таким образом, для того, чтобы точка с координатами x, y принадлежала построенному графику, необходимо выполнение условий логическое выражение которых имеет вид:
Fbool(x,y)=((x*x+y*y<=1 )&&((x+1)*(x+1)+y*y>=2))
Разработка схем алгоритмов
Схема алгоритма функции Resh1() вычисления условной функции решения задачи, использующей стандартное разветвление и сложное логическое выражение (рис. 2)
Рисунок 2
Схема алгоритма функции пользователя Resh2() вычисления условной функции решения задачи, которая реализует вложенные разветвления только с помощью операций отношения, без использования логических операций и сложных логических выражений (рис. 3);
Рисунок 3
Схема функционального алгоритма Resh3, использующая только сложное логическое выражение (рис. 4)
Рисунок 4
Разработка программного кода проекта
Файл с функцией main()
#include "stdafx.h"
#include <iostream>
using namespace std;
void GetXY(float&, float&);
void Put(bool, float, float);
bool Resh1(float, float);
bool Resh2(float, float);
bool Resh3(float , float );
int main()
{
float x, y;
bool b, c;//признак попадания в область
GetXY(x, y);//вызов функции ввода исх.данных
cout << "Решение 1-й функции:" << endl;
b = Resh1(x, y);//вызов 1-й функции решения
Put(b, x, y);// вывзов функции вывода результатов
cout << "Решение 2-й функции:" << endl;
c = Resh2(x, y);//вызов 2-й функции решения
Put(c, x, y);// вывзов функции вывода результатов
cout << "Решение 3-й функции:" << endl;
c = Resh3(x, y);//вызов 3-й функции решения
Put(c, x, y);// вызов функции вывода результатов
system("PAUSE");
system("PAUSE");
return 0;
}
Файл с вводом и выводом
#include "stdafx.h"
#include <iostream>
using namespace std;
void GetXY(float& x, float& y)//ввод
{
setlocale(LC_ALL, "rus");
cout << "Введите координаты точки x,y\n";
cin >> x >> y;
}
void Put(bool b, float x, float y)//вывод
{
setlocale(LC_ALL, "rus");
cout << "Точка с коордитнами ( " << x << "," << y << ")" << endl;
if (b) cout << "Попала в заданную область " << endl;
else cout << "Не попала в заданую область " << endl;
}
Файл с функцией 1 ,2 и 3 варианта решения.
#include "stdafx.h"
#include "cmath"
bool Resh1(float x, float y)//первая- стандарт.разветвление с логическими операциями
{
if ((x*x+y*y<=1 )&&((x+1)*(x+1)+y*y>=2)) return true;
else return false;
}
bool Resh2(float x, float y)//вторая-вложенное разветвление
{
if (x*x+y*y<=1)
if ((x+1)*(x+1)+y*y>=2) return true;
return false;
}
bool Resh3(float x, float y)//вторая-вложенное разветвление
{
return (x*x+y*y<=1 )&&((x+1)*(x+1)+y*y>=2);
}
Выполнение разработанного проекта
Получены следующие результаты выполнения проекта, приведенные на рисунках 5-6 для тестовых данных точек, попадающих и не попадающих в заданную область.
Рисунок 5
Рисунок 6
Доказательство правильности результата
Разработаны с тестовые исходные данные для контрольного решения, проверяющие попадание и непопадание точки с различными координатами в заданную область, и получены результаты:
Исходные данные |
Результат |
|
X=0 |
Y=1 |
Точка попала в область |
X=1 |
Y=0 |
Точка не попала в область |
X=-0.3 |
Y=-1 |
Точка не попала в область |
При тестовых данных результаты ручного расчета и вычисления на компьютере совпадают.