Loading...
g_todorov avatar g_todorov 106 Точки

Здравей,

сигурно има и по-оптимални решения, но моето работи на 100/100 и сега ще го обясня:

1. Разделяш фигурата на 2 правоъгълника с обща страна

     тоест 3 важни обекта - 2 правоъгълника + 1 общата вътрешна страна и им изчисляваш координатите

за x и y още в самото начало на сорс-кода веднага след конзолните изчитания. Ползваш взаимозависимостта на h, за да получиш координатите на правоъгълниците и вътрешната страна.

2. Внимателно по фигурата чрез координатите очертаваш външните за 2-та правоъгълника страни без 

общата вътрешна част.

3. Тези координати от точка 2 ги поместваш в променливи за по-лесно осмисляне (това са условията за принадлежност на точката xy към страните на правоъгълниците без вътрешната (borders))

4. За всеки от 2-та правоъгълника и за вътрешната гранична страна описваш чрез координатите условията  за принадлежността им към вътрешността на 2-те фигури. Тези условия както и описанието на

вътрешната граничта страна също ги поместваш във пременливи.

5. Правиш If - else конструкция и в нея чрез логически оператори "||" поместваш променливите очертаващи страните на фигурата ако една от тези променливи е вярна Console.WriteLine("border");

ако не else if - за променливите отразяващи всички вътрешни точки на фигурата - съответно Console.WriteLine("inside");

else

Console.WriteLine("outside");

Изчети още веднъж това, което написах и после виж кода ми по-долу, като ще се ориентираш по коментарчетата: И още нещо - пред очите ти трябва да е чертежа иначе трудно ще стане.

Успех :)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PointInTheFigure
{
    class Program
    {
        static void Main(string[] args)
        {
            var h = int.Parse(Console.ReadLine());
            var x = int.Parse(Console.ReadLine());
            var y = int.Parse(Console.ReadLine());

            //First Rectangle's Coordinates:
            var x1 = 0;
            var y1 = 0;
            var x2 = 3 * h;
            var y2 = 1 * h;

            //Second Rectangle's Coordinates:
            var x3 = 1 * h;
            var y3 = 1 * h;
            var x4 = 2 * h;
            var y4 = 4 * h;

            //Internal Border's Coordinates For The Rectangles:
            var x5 = 1 * h;
            var y5 = 1 * h;
            var x6 = 2 * h;
            //Borders of The Lower Rectangle:
            var onLeftSide1 = ((x == x1) && (y >= y1 && y <= y2));
            var onRightSide1 = ((x == x2) && (y >= y1 && y <= y2));
            var onBottom1 = ((y == y1) && (x >= x1 && x <= x2));
            var onTopLeft1 = ((y == y2) && (x >= x1 && x <= x3));
            var onTopRight1 = ((y == y2) && (x >= x4 && x <= x2));

            //Borders of The Upper Rectangle Without Internal Border:
            var onLeftSide2 = ((x == x3) && (y >= y3 && y <= y4));
            var onRightSide2 = ((x == x4) && (y >= y3 && y <= y4));
            var onTop2 = ((y == y4) && (x >= x3 && x <= x4));

 

            var internalBorder = ((y == y5) && (x > x5) && (x < x6));

            var insideRectang1 = ((x > x1) && (x < x2) && (y > y1) && (y < y2));

            var insideRectang2 = ((x > x3) && (x < x4) && (y > y3) && (y < y4));

            if (internalBorder || insideRectang1 || insideRectang2)
            {
                Console.WriteLine("inside");
            }
            else if (onLeftSide1 || onRightSide1 || onBottom1 || onTopLeft1 || onTopRight1 || onLeftSide2 || onRightSide2 || onTop2)
            {
                Console.WriteLine("border");
            }
            else
            {
                Console.WriteLine("outside");
            }
        }
    }
}

 

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.