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

  • Кафедра вычислительной техники ОТЧЕТ

  • Лабораторная 1 Вебер 1321. Попадание точки в заданную область


    Скачать 194.15 Kb.
    НазваниеПопадание точки в заданную область
    Дата03.03.2022
    Размер194.15 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная 1 Вебер 1321.docx
    ТипТехническое задание
    #382225

    МИНОБРНАУКИ РОССИИ

    САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

    ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

    «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

    Кафедра вычислительной техники


    ОТЧЕТ

    по лабораторной работе №1

    по дисциплине «Программирование»

    Тема: Попадание точки в заданную область


    Студент гр. 1321




    Вебер В.Д.

    Преподаватель




    Миронов С.Э.



    Санкт-Петербург

    2021

    Содержание


    1. Техническое задание


    Написать программу определяющую принадлежность точки к закрашенной области (см. рис. 1).
      1. Дано


    На рис. 1 изображены три прямые Y = -X, Y = X и Y= a. Y = a параллельна оси абсцисс, а Y = -X и Y = X – диагонали, проходящие через начало координат. Точка должна принадлежать области между диагоналями и выше прямой или принадлежать ей, параллельной оси абсцисс.


    Рисунок 1. Заданная область

    1. Решение

      1. Анализ задачи


    Переменная (a), а так же координаты точки (x;y) задаются пользователем. Программа должна выявлять все возможные недочеты при вводе этих значений. Например, координата y точки должна лежать или быть выше горизонтальной прямой. После чего производится проверка принадлежности точки к заданной области. Пользователю выводится сообщение о результате работы программы (неверные введенные данные/точка принадлежит области или нет).
        1. Проверка введенных данных


    Если точка лежит ниже горизонтальной прямой, то пользователю выводится сообщение, что точка не может принадлежать заданной области и предлагает ввести новые данные.
        1. Проверка принадлежности точки к заданной области


    Для определения нахождения точки в области проверяется истины или ложны следующие неравенства:





    Если они истины, тогда программа сообщает о том, что точка лежит в области. Если ложны, то соответственно не лежит.
      1. Схема алгоритма


    Схема алгоритма приведена на рис. 2.

    Рисунок 2 – Схема алгоритма.
      1. Текст программы


    Текст программы находится в ПРИЛОЖЕНИИ А.
    1. Контрольные примеры


    Допустим, зададим область, где a = 3, X = 3 Y = 4 (см. рис. 4).

    Рисунок 4 – Пример работы программы


    Точка в заданной области. Введем новые значения X = 5 а Y = 3 (рис. 5).


    Рисунок 5 – Пример работы программы


    Точка вне заданной области. Изменим область (рис. 6).


    Рисунок 6 – Пример работы программы


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


    Программа выводит запрос на ввод данных для определения области. В случае неверно введенных данных программа повторно просит ввести данные. Затем запрашиваются координаты точки, после чего программа проверяет ее принадлежность к ранее заданной области и выдает результат пользователю. На экран выводится вопрос о желании проверить ещё одну точку. При отрицательном ответе - запрос на желание ввести другую область. При положительном ответе на первый или второй вопрос запрашивается ввод новых данных. При всех отрицательных ответах - программа прекращает работу.

    Вывод


    В ходе проделанной работы были получены практические навыки по работе с языком программирования С, его условными конструкциями (if…else), циклами (do…while), выводом информации(printf), вводом данных (scanf, getche), и работой с переменными. Был разработан алгоритм и написана программа позволяющая задать область и проверить принадлежность точки к ней.

    ПРИЛОЖЕНИЕ A

    КОД ПРОГРАММЫ


    #include

    #include

    #include
    int main()

    {

    system("chcp 65001");

    double a,x,y;

    unsigned char scanCond;

    char answer;

    printf("Программа определения принадлежности точки к заданной области\n");

    do {

    printf("Введите значение a горизонтальной прямой: ");

    scanCond = scanf("%lf",&a);

    while (scanCond == 0) {

    printf("Введите значение a горизонтальной прямой: ");

    fflush(stdin);

    scanCond = scanf("%lf",&a);

    }

    fflush(stdin);
    do {

    printf("Введите значение Y точки: ");

    scanCond = scanf("%lf",&y);

    while (scanCond == 0) {

    printf("Введите значение Y точки: ");

    fflush(stdin);

    scanCond = scanf("%lf",&y);

    }

    fflush(stdin);
    if (y < a) {

    printf("Точка лежит вне заданной области.\n");

    }

    else {

    printf("Введите значение X точки: ");

    scanCond = scanf("%lf",&x);

    while (scanCond == 0) {

    printf("Введите значение X точки: ");

    fflush(stdin);

    scanCond = scanf("%lf",&x);

    }

    fflush(stdin);
    if (abs (y) >= abs(x))

    printf("Точка принадлежит заданной области.");

    else

    printf("Точка не принадлежит заданной области.");

    }

    printf("\nЗадать новые координаты точки? (y/n): ");

    answer = getche();

    fflush(stdin);

    printf("\n");

    }

    while (answer == 'Y' || answer == 'y');

    printf("Задать новую область? (y/n): ");

    answer = getche();

    fflush(stdin);

    printf("\n");

    }

    while (answer == 'Y' || answer == 'y');

    return 0;

    }


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