Лабораторная 1 Вебер 1321. Попадание точки в заданную область
Скачать 194.15 Kb.
|
МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра вычислительной техники ОТЧЕТ по лабораторной работе №1 по дисциплине «Программирование» Тема: Попадание точки в заданную область
Санкт-Петербург 2021 СодержаниеТехническое заданиеНаписать программу определяющую принадлежность точки к закрашенной области (см. рис. 1). ДаноНа рис. 1 изображены три прямые Y = -X, Y = X и Y= a. Y = a параллельна оси абсцисс, а Y = -X и Y = X – диагонали, проходящие через начало координат. Точка должна принадлежать области между диагоналями и выше прямой или принадлежать ей, параллельной оси абсцисс. Рисунок 1. Заданная областьРешениеАнализ задачиПеременная (a), а так же координаты точки (x;y) задаются пользователем. Программа должна выявлять все возможные недочеты при вводе этих значений. Например, координата y точки должна лежать или быть выше горизонтальной прямой. После чего производится проверка принадлежности точки к заданной области. Пользователю выводится сообщение о результате работы программы (неверные введенные данные/точка принадлежит области или нет). Проверка введенных данныхЕсли точка лежит ниже горизонтальной прямой, то пользователю выводится сообщение, что точка не может принадлежать заданной области и предлагает ввести новые данные. Проверка принадлежности точки к заданной областиДля определения нахождения точки в области проверяется истины или ложны следующие неравенства: Если они истины, тогда программа сообщает о том, что точка лежит в области. Если ложны, то соответственно не лежит. Схема алгоритма приведена на рис. 2. Рисунок 2 – Схема алгоритма. Текст программыТекст программы находится в ПРИЛОЖЕНИИ А. Контрольные примерыДопустим, зададим область, где a = 3, X = 3 Y = 4 (см. рис. 4). Рисунок 4 – Пример работы программыТочка в заданной области. Введем новые значения X = 5 а Y = 3 (рис. 5). Рисунок 5 – Пример работы программыТочка вне заданной области. Изменим область (рис. 6). Рисунок 6 – Пример работы программыПрограмма закончила свою работу. Руководство пользователяПрограмма выводит запрос на ввод данных для определения области. В случае неверно введенных данных программа повторно просит ввести данные. Затем запрашиваются координаты точки, после чего программа проверяет ее принадлежность к ранее заданной области и выдает результат пользователю. На экран выводится вопрос о желании проверить ещё одну точку. При отрицательном ответе - запрос на желание ввести другую область. При положительном ответе на первый или второй вопрос запрашивается ввод новых данных. При всех отрицательных ответах - программа прекращает работу. ВыводВ ходе проделанной работы были получены практические навыки по работе с языком программирования С, его условными конструкциями (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; } |