А59д

Даны действительные числа [latex]x[/latex], [latex]y[/latex]. Определить, принадлежит ли точка с координатами [latex]x[/latex], [latex]y[/latex] заштрихованной части плоскости.

cpp

Тесты:

KX KY ПРИНАДЛЕЖИТ?
1 1 нет
0 0 да
0.5 0 да
0.25 0.5 да
-0.25 1.5 нет
Ссылка на код: http://ideone.com/R3DlCS
Ссылка на код: ссылка

Ход решения:

Зададим функцией [latex]f\left({x}\right)[/latex] уравнение прямой для двух точек с координатами[latex]\left(x_{0} ; y_{0}\right)[/latex] и [latex]\left(x_{1} ; y_{1}\right)[/latex], которое имеет вид:  [latex]\left( x — x_{0}\right)\cdot\left( y_{1} — y_{0}\right) — \left( y-y_{0}\right)\cdot\left( x_{1} — x_{0}\right) = 0[/latex]

Подставим нужную нам точку в уравнение каждой прямой. Если значение положительное, то точка находится со внутренней стороны. На самом деле в двух четвертях значение будет отрицательное, но для удобства я сделал так, чтобы они были тоже положительны (отнимая вершины наоборот в тех четвертях, где значение отрицательное). То есть,  если  значение во всех 4 случаях будут положительные, либо [latex]= 0[/latex] (Значение [latex]0[/latex] означает что наша точка лежит на прямой, а следовательно принадлежит фигуре)  мы можем утверждать что точка находится в  заштрихованной плоскости. В противном случае она находится вне неё.

 

Related Images:

5 thoughts on “А59д

  1. «Зададим функцией f уравнение прямой для двух точек с координатами\left(x_{0};y_{0}\right)и \left(x_{1};y_{1}\right); \left( x-x_{0}\right)*\left( y_{1}-y_{0}\right)-\left( y-y_{0}\right)*\left( x_{1}-x_{0}\right)» — во первых, нужно было указать, что f(x) = Ваша формула, во вторых, в мат. формуле звездочка не ставится, а ставится маленькая точка посередине строки или даже знак умножения опускается. В третьих, уравнение прямой имеет вид f(x)=0 (знак равенства должен быть в уравнении).

    «если значение во всех 4 случаях будут \geq 0 (Значение 0 означает что наша точка лежит на прямой, а следовательно принадлежит фигуре), то мы можем утверждать что точка принадлежит нашей фигуре.» — почему? «Значение 0 означает что наша точка лежит на прямой, а следовательно принадлежит фигуре» — согласен, но если значение функции больше нуля — это с одной стороны от прямой, но с какой? в отчете не указано.

    Программа то верная, и тесты это показывают — необходимо пояснение подкорректировать.

    • Ошибки учел, исправил. С функцией вы меня немного неправильно поняли , я имел ввиду функцию, которую задаю в программе и потом использую.

  2. «Зададим функцией f\left(_{x}\right) уравнение » нижний индекс лишний
    «с координатами\left(x_{0};y_{0}\right)и» а тут не хватает пробелов
    «с координатами\left(x_{0};y_{0}\right)и \left(x_{1};y_{1}\right); \left( x-x_{0}\right)\cdot\left( y_{1}-y_{0}\right)-\left( y-y_{0}\right)\cdot\left( x_{1}-x_{0}\right)=0» можно вставить какую-то связку, например «уравнение прямой для двух точек с координатами\left(x_{0};y_{0}\right)и \left(x_{1};y_{1}\right), которое имеет вид …»

    «Если значение>0, то точка находится со внутренней стороны. » вот это и нужно аргументировать или хотя бы написать, что получено эмпирически — если это так и есть. Подсказка: можете использовать тот факт, какой обход фигуры, по часовой или против часовой стрелки, можете использовать то, что f(x) векторное произведение, или можете подставить в уравнение координаты какой-то внутренней точки, например, (0,0) — центра координат. Кстати «Если значение>0» — в таких случаях лучше писать «Если значение положительно» или «Если значение больше нуля» — раз Вы написали словом «значение» (а не формулой), словами пишите и условие «больше нуля».

    Кстати, интересный факт, не то чтобы ошибка, но почему printf ("Принадлежит"); в фигурных скобках, а printf (" Не принадлежит"); не в фигурных скобках, в printf ("Принадлежит"); пробела в начале выводимой строки нет, а в а printf (" Не принадлежит"); есть, в функции f открывающая фигурная скобка на следующей строке, а в остальные открывающие скобки на той же строке, что и оператор или заголовок. Какая-то непоследовательность получается.

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

    • Учел ваши замечания.

Добавить комментарий