А59и

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

А59и

 

Вычислил уравнения прямых по формуле :

[latex]\frac{x-x_{a}}{x_{b}-x_{a}}=\frac{y-y_{a}}{y_{a}-y_{b}}[/latex]

Получил уравнения :

[latex]y=2x+3[/latex], [latex]y=-x[/latex], [latex]y=\frac{x-1}{3}[/latex]

Плоскость разделил на верхнюю и нижнюю части осью ox([latex]y\geq 0[/latex], [latex]y\leq 0[/latex]), при помощи первых двух уравнений выделил заштрихованную область в верхней части, при помощи первого и третьего соответственно в нижней(изменив знак «=» на «≥» или «≤»(в зависимости от того где должна лежать точка для выполнения условия) ).

Тесты:

[latex]x[/latex] [latex]y[/latex] Результат:
-2 -1 Точка входит в заштрихованную область.
-2 -1.001 Точка не входит в заштрихованную область.
-2 -0.999 Точка не входит в заштрихованную область.
-1 1 Точка входит в заштрихованную область.
-1.001 1 Точка не входит в заштрихованную область.
-1 1.001 Точка не входит в заштрихованную область.
-1 0.999 Точка входит в заштрихованную область.
1 0 Точка входит в заштрихованную область.
1 -0.001 Точка не входит в заштрихованную область.

Сам код:

Ссылка на код

 

 

Носуленко Марк
Носуленко Марк

Latest posts by Носуленко Марк (see all)

5 thoughts on “А59и

  1. Похоже, что программа написана верно, да и тесты хорошо составлены.
    Но, к сожалению, у Вас совсем не описано в отчете как получено логическое выражение x>=-2 && x<=0 && y>=0 && y<=1 && y<=-x && x>=(y-3)/2 || x>=-2 && x<=1 && y>=-1 && y<=0 && x>=(y-3)/2 && y>=(x-1)/3. Выражение довольно сложное, действительно, вы правильно заметили, что его можно сделать короче. Как по мне, впрочем, подходит и такое, слегка избыточное, логическое выражение — т.к. в нем присутствует определенная логика, которую Вы и должны последовательно изложить в отчете.

    • Изначально я прописывал так: условия через «лог. и» для каждой прямой(предварительно вычислив формулы для составления неравенства) разделив условия для прямых «лог. или», но программа работала не верно в силу того что области прямой y=2x+3 и y=(x-1)/3 пересекаются, по этому я разделил плоскость на две части что и решило мою проблему.

  2. Немного дополню и от себя.
    Начну с приятного для нас всех — программа работает правильно!
    Конечно, при такой скорости Вашей работы (одна программа в месяц) на окончание первого семестра у Вас уйдёт целый год. Но раз что-то получается, то есть по крайней мере принципиальная возможность продолжать учёбу. Это радует и вселяет надежду.

    Теперь о грустном:
    — Отсутствует пояснение. Одной «волшебной» формулы мало. Нужно объяснить как Вы её получили и как рассуждали.
    — Судя по формуле (x>=-2 && x< =0 && y>=0 && y< =1 && y<=-x && x>=(y-3)/2 || x>=-2 && x< =1 && y>=-1 && y< =0 && x>=(y-3)/2 && y>=(x-1)/3), Вы разбили заштрихованную область на два треугольника. Один над осью Ох, другой под ней. Это означает, что условия y>=0 (для верхнего треугольника) и y<=0 (для нижнего) вполне уместны. Остальные стороны треугольников не являются вертикальными или горизонтальными. А значит условия где присутствует только х или только у не имеют отношения к задаче. Остаётся по три условия для каждого треугольника. Они соответствуют сторонам треугольников. Их и нужно оставить. Сможете переделать? - "Определить принадлежит ли точка заштрихованной области" -- это не ключевое слово. Это целое предложение. В метках допустимы только слова или словосочетания. Разбейте это предложение на слова и словосочетания и заведите каждое отдельно.

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