МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Оси и плоскости тела человека Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Анализ и разработка метода решения





Первым шагом алгоритма должен быть ввод координат точки: x и y. Для большего удобства при анализе результатов можно вывести введенные значения на экран. Из рисунка видно, что целевая область образуется пересечением: прямой с коэффициентом -1 и смещением +1 и окружности с центром в начале координат и радиусом 1, как показано на рисунке справа  

Уравнение этой прямой: y=-x+1.

Уравнение окружности: x2+y2=1.

Для проверки попадания точки в заданную область нужно проверить условия того, что:

1) Точка лежит выше прямой или на ней, т.е.: y>=-x+1

2) Точка лежит внутри окружности или на ней, т.е.: x2+y2<=1

Точка лежит в области, если выполняются оба условия: y>=-x+1 И x2+y2<=1 (1).

Формальная постановка задачи

Входные данные:

X, y – координаты точки.

Выходные данные: Сообщение «Точка попадает в область» или «Точка не попадает в область»

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

Алгоритм

Разработка текста программы

Для реализации алгоритма нам будут нужны только переменные для хранения значений координат x и y. В условиях задания не приведены требования к точности вычислений, рисунок представлен с довольно невысокой точностью, поэтому для этих переменных было бы достаточно типа float. Но в соответствии с общим стилем программирования на C выберем для них тип double.

Текст программы начинается с включения фала:

#include <stdio.h>

т.к. нам обязательно понадобятся функции стандартного ввода-вывода, которые описаны в этом файле.

Далее идет заголовок и открытие главной функции:

int main(void) {

и объявление переменных, определенных в пункте 5.2.

double x, y;

Для каждой координаты выводится приглашение на ее ввод и вводится ее значение:

printf("Введите координату x >"); \\ или – cout

scanf("%lf",&x); \\ или – cin

printf("Введите координату y >");

scanf("%lf",&y);

Введенные значения координат выводятся на экран:

printf("x=%6.3lf; y=%6.3lf\n",x,y);

Далее идет проверка условий попадания точки в область. Оба условия проверяются одним выражением. Поскольку точка попадает в область, если выполняются оба условия вместе, условия в выражении соединены операцией "логическое И":

if ( (y>=1-x)&& (x*x+y*y<=1) )

Если значение логического выражения в условном операторе истинно, то выводится сообщение про попадание:

printf("Точка попадает в область\n");

В противном случае выводится сообщение про попадание:

еlse printf("Точка не попадает в область\n");

Полный текст программы приведен ниже.

/****************************************************//* Лабораторная работа 2 *//* Условный оператор *//* Пример выполнение. Вариант 30. *//****************************************************/#include <stdio.h>int main(void) { double x, y; /* координаты точки */ /* ввод координат */ printf("Введите координату x >"); scanf("%lf",&x); printf("Введите координату y >"); scanf("%lf",&y); /* вывод только что введенных значений */ printf("x=%6.3lf; y=%6.3lf\n",x,y); /* проверка условий */ if ( (y>=1-x) && (x*x+y*y<=1) ) printf("Точка попадает в область\n"); else printf("Точка не попадает в область\n"); return 0;}

Отладка программы

Самое важное в отладке этой программы - убедиться в том, что программа выдает правильные результаты при разных комбинациях входных данных. Следовательно, необходимо подобрать такие комбинации, которые были бы показательными для разных случаев размещения точки. Мы предлагаем такие комбинации:

1) точка лежит ниже области - (0.4, 0.4);

2) точка лежит на нижней границе области - (0.5, 0.5);

3) точка лежит внутри области - (0.7, 0.6);

4) точка лежит на верхней границе области - (0.707, 0.707);

5) точка лежит выше области - (0.8, 0.8);

6) точка лежит на правом краю области - (1.0, 0.0);

7) точка лежит на левом краю области - (0.0, 1.0);

Тестирование

Ниже приведены результаты работы программы для входных данных по п.5.4:

x=0.400; y=0.400Точка не попадает в область x= 0.500; y= 0.500Точка попадает в область x= 0.700; y= 0.600Точка попадает в область x= 0.707; y= 0.707Точка попадает в область x= 0.800; y= 0.800Точка не попадает в область x= 0.100; y= 0.000Точка попадает в область x= 0.000; y= 1.000Точка попадает в область




©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.