Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / Laba_varik20_7.1

.docx
Скачиваний:
10
Добавлен:
10.06.2023
Размер:
111.98 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Информатика»

Лабораторная работа №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

Точка не попала в область

При тестовых данных результаты ручного расчета и вычисления на компьютере совпадают.

Соседние файлы в папке лабы