Софтуерно Инженерство
Loading...
+ Нов въпрос
ivankr89 avatar ivankr89 1 Точки

Задача 06. Точка на страна на правоъгълник

Здравейте!

 

Опитвам се да реша тази задача от много дълго време и затова реших да помоля за помощ...

При тест във Visual Studio изходът е правилен.

Следвах решението, което е в книгата "Programming Basics C#". Judge не ми го приема.

Опитах втория вариант на решението, дадено в книгата. Не...

Следвах решението от видеото "По-сложни проверки". И него не ми го приема.

Търсих из форума за други решения. Изглеждат ми напълно идентични с моите. Тях ги приема, а моите не.

Очевидно не успявам да видя някакъв детайл. Моля, погледнете отстрани и ми кажете къде бъркам.

От сега съм благодарен. :)

 

Ето го вариант 1:

using System;

namespace PointOnABorder
{
    class Program
    {
        static void Main(string[] args)
        {
            var x1 = double.Parse(Console.ReadLine());
            var y1 = double.Parse(Console.ReadLine());
            var x2 = double.Parse(Console.ReadLine());
            var y2 = double.Parse(Console.ReadLine());
            var x = double.Parse(Console.ReadLine());
            var y = double.Parse(Console.ReadLine());

            if (((x == x1 || x == x2) && (y >= y1 || y <= y2)) ||
                ((y == y1 || y == y2) && (x >= x1 || x <= x2)))
            {
                Console.WriteLine("Border");
            }

            else
            {
                Console.WriteLine("Inside/Outside");
            }
        }
    }
}

 

И вариант 2:

using System;

namespace PointOnABorder
{
    class Program
    {
        static void Main(string[] args)
        {
            double x1 = double.Parse(Console.ReadLine());
            double y1 = double.Parse(Console.ReadLine());
            double x2 = double.Parse(Console.ReadLine());
            double y2 = double.Parse(Console.ReadLine());
            double x = double.Parse(Console.ReadLine());
            double y = double.Parse(Console.ReadLine());

            var leftside = (x == x1) && (y >= y1) && (y <= y2);
            var rightside = (x == x2) && (y >= y1) && (y <= y2);
            var upside = (y == y1) && (x >= x1) && (x <= x2);
            var downside = (y == y2) && (x >= x1) && (x <= x2);

            if (leftside || rightside || upside || downside)
            {
                Console.WriteLine("Border");
            }

            else
            {
                Console.WriteLine("Inside/Outside");
            }
        }
    }
}

 

Господин Judge ми дава само 27 точки, а опитах как ли не.

Какво не мога да видя?

Kristian8606 avatar Kristian8606 41 Точки

Бих ти препоръчал да си начертаеш на лист хартия дадените входове така ще се ориентираш по лесно. 

Ако не ти стане ясно пак пиши.

0
TeMePyT avatar TeMePyT 142 Точки

https://pastebin.com/CRu6PaVP Ето ти моето решение,  имаш и грешка при изписването преди и след / има интервал.

 

Това е първия ти пример с поправени проверки и изписване https://pastebin.com/PYEMr37b

При втория ти пример грешката е само при изписването, интервал преди и след /

0
13/03/2018 10:55:21
TodorovP avatar TodorovP 177 Точки

Едното от условията ласи

  • x съвпада с x1 или x2 и същевременно y е между y1 и y2

Следователно трябва трябва да е записано

(((x == x1 || x == x2) && (y >= y1 && y <= y2))

Аналогично е по оста y.

0
ivankr89 avatar ivankr89 1 Точки

Благодаря много! Разбрах кое съм сбъркал и вече ми е по-спокойно! :)

0