Главная страница
Навигация по странице:

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

  • «Разработка проекта, решающего задачу принадлежности или непринадлежности точки с заданными координатами геометрической фигуре»

  • 1)Индивидуальное задание

  • (x+1.5)^2+(y+0)^2 Для C++

  • 4)Разработка программного проекта

  • 5) Результат работы программы

  • 6) Доказательство правильности результата

  • Лаба 7.1 инфа 1 курс. лаба7.1 БИК2109 Малевич Татьяна. Лабораторная работа 7 Проект 1 Разработка проекта, решающего задачу принадлежности или непринадлежности точки с заданными координатами геометрической фигуре


    Скачать 223.53 Kb.
    НазваниеЛабораторная работа 7 Проект 1 Разработка проекта, решающего задачу принадлежности или непринадлежности точки с заданными координатами геометрической фигуре
    АнкорЛаба 7.1 инфа 1 курс
    Дата15.02.2022
    Размер223.53 Kb.
    Формат файлаdocx
    Имя файлалаба7.1 БИК2109 Малевич Татьяна.docx
    ТипЛабораторная работа
    #362102

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

    Ордена Трудового Красного Знамени федеральное государственное

    бюджетное образовательное учреждение высшего образования

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

    Лабораторная работа №7 - Проект 1

    «Разработка проекта, решающего задачу принадлежности или непринадлежности точки с заданными координатами геометрической фигуре»

    по теме:

    «Логические данные и выражения. Операторы разветвления VС++. Программная реализация базовых разветвляющиеся структур и типовых алгоритмов».

    Выполнил: студент гр. БИК2109 Малевич Т.Ф.

    Вариант №14

    Проверил: старший преподаватель Загвоздкина А.В.


    Москва, 2021 г.

    1)Индивидуальное задание

    2
    )Формализация задания


    Задание состоит в том, чтобы для выделенной области определить и записать логическое выражение с условием, зависимое от двух переменных x и y (где [x,y] координаты точки), принимающее логическое значение false (0) или true (1), в зависимости от попадания или не попадания точки с координатами X, Y в выделенную область рисунка.

    Строим график своего индивидуального задания (рис. 1):

    Р
    исунок 1- график индивидуального задания

    Далее запишем условие. Если точка попадает в одну из окружностей или же попадают в дугу, то условие выполняется. Условие является таким:

    (x+1.5)^2+(y+0)^2<= 1 | | (x-1.5)^2+(y+0)^2<=1 | | y=(1 – x^2)^½

    Для C++ это выражение будет записываться так:

    ((x+1.5)*(x+1.5)+(y*y))<= 1 | | ((x-1.5)*(x-1.5)+(y*y))<=1 | | y= =sqrt(1 – x*x)

    3) Схемы алгоритмов

    Я разработала схемы 3-х алгоритмов.

    Схема алгоритма Resh1 решения задачи, использующая стандартное разветвление и сложное логическое выражение (рис. 3.1):

    Р
    исунок 3.1 - схема алгоритма Resh1

    Схема алгоритма Resh2 решения задачи, использующая вложенные разветвления только с помощью операций отношения, без использования логических операций и сложных логических выражений (рис. 3.2):

    Поправка: в комментарии вместо razv() должен быть razv2(), заметила во время проверки задания перед отправкой.

    Р
    исунок 3.2 - схема алгоритма Resh2

    Схема алгоритма Resh3 решения задачи, использующая только сложное логические выражения(рис. 3.3):

    Р
    исунок 3.3 - схема алгоритма Resh3

    4)Разработка программного проекта

    Далее разрабатываем программный код проекта для решения задания.

    Файл с функциями решения задачи, реализующие функциональные алгоритмы (рис. 4.1)

    #include

    bool Resh1(float x, float y)

    {

    if (((x-1.5)*(x-1.5)+(y*y))<= 1 || ((x+1.5)*(x+1.5)+(y*y))<=1 || y==sqrt(1-x*x))

    return true;

    else return false;

    }

    bool Resh2(float x, float y)

    {

    if ((x-1.5)*(x-1.5)+(y*y) <= 1)

    return true;

    if ((x+1.5)*(x+1.5)+(y*y) <= 1)

    return true;

    if (y==(sqrt(1-x*x)))

    return true;

    return false;

    }

    bool Resh3(float x, float y)

    {

    return (((x-1.5)*(x-1.5)+(y*y))<= 1 || ((x+1.5)*(x+1.5)+(y*y))<=1 || y==sqrt(1-x*x));

    }
    Рисунок 5 - файл с функциями решения

    Файл с функциями ввода и вывода (рис. 4.2).

    #include

    using namespace std;

    void GetXY(float&x, float&y)

    {

    setlocale(0, "");

    cout<<"Введите координаты точек x, y\n ";

    cin>>x>>y;

    }

    void Put(bool b, float x, float y)

    {

    setlocale(0, "");

    cout<<"Точка с координатами( "<
    if (b) cout<<"Попала в заданную область"<
    else cout<<"Не попала в заданную область"<
    }
    Рисунок 6 - файл с функциями ввода и вывода

    Файл с главной функцией main (рис. 4.3).

    #include

    using namespace std;

    void GetXY(float&x, float&y);

    void Put(bool b, float x, float y);

    bool Resh1(float x, float y);

    bool Resh2(float x, float y);

    bool Resh3(float x, float y);

    int main()

    {

    float x, y;

    bool b, c, d;

    GetXY(x,y);

    cout<<"Решение 1-й функции:"<
    b=Resh1(x,y);

    Put(b,x,y);

    cout<<"Решение 2-й функции:"<
    c=Resh2(x,y);

    Put(c,x,y);

    cout<<"Решение 3-й функции:"<
    d=Resh3(x,y);

    Put(d,x,y);

    system("Pause");

    return 0;

    system("Pause");

    return 0;

    }
    Рисунок 7 - файл главной функции main
    5) Результат работы программы

    Проверяем программу на числах, попадающих в заданную точку (рис.5.1):



    Рисунок 5.1-Результат работы программы с тестовыми числами, попадающими в заданную точку

    Проверим работу программы на других числах, не попадающих в очки(рис.5.2:

    Р
    исунок 5.2 -Результат работы программы с тестовыми числами, попадающими в заданную точку
    6) Доказательство правильности результата

    Разработаны с тестовые исходные данные для контрольного решения, проверяющие попадание и непопадание точки с различными координатами в заданную область, и получены результаты:

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




    написать администратору сайта