Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Vinetu avatar Vinetu 1 Точки

Point on Segment - не мога да разбера къде ми е грешката

Здравейте, опитвам се да реша задача "4. Точка върху отсечка" от "Подготовка за изпит по Програмиране за начинаещи", условието може да видите тук.

Когато я тествам с "Примерен вход и изход" дадени в условието, всичко си работи перфектно.

Но когато направя тест в judge, ми дава само 70%, като за съжаление не ми показва къде са ми грешките.

Ако някой може да ми обясни къде греша, ще съм му много благодарен.

Ето го и кода ми:

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

namespace Point_on_Segment
{
    class Program
    {
        static void Main(string[] args)
        {
            int first = int.Parse(Console.ReadLine());
            int second = int.Parse(Console.ReadLine());
            int point = int.Parse(Console.ReadLine());

            // Тук намирам дистанцията до най-близката точка.
            int distance1 = Math.Abs(first - point);
            int distance2 = Math.Abs(second - point);
            int nearEnd = 0;

            if (distance1 <= distance2)
            {
                nearEnd = distance1;
            }
            else
            {
                nearEnd = distance2;
            }
            
            // Тук проверявам дали точката е вътре или вън.
            if (first >= point && point >= second)
            {
                Console.WriteLine("in");
                Console.WriteLine("{0}", nearEnd);
            }
            else
            {
                Console.WriteLine("out");
                Console.WriteLine("{0}", nearEnd);
            }
        }
    }
}

 

Тагове:
0
Programming Basics 02/08/2016 10:38:57
Vinetu avatar Vinetu 1 Точки

Много ви благодаря за бързите и описателни отговори.

Страхотни сте :)

0
FireHead avatar FireHead 44 Точки

int x1 = int.Parse(Console.ReadLine());

int x2 = int.Parse(Console.ReadLine());

int x = int.Parse(Console.ReadLine());

int dist1 = Math.Abs(x1 - x);

int dist2 = Math.Abs(x2 - x);

int distance = Math.Min(dist1, dist2);

if (x > Math.Min(x1, x2) && x < Math.Max(x1, x2))

{ Console.WriteLine("in"); Console.WriteLine(distance); }

else { Console.WriteLine("out"); Console.WriteLine(distance); }

0
FireHead avatar FireHead 44 Точки

Така е още по-елегантно...

0
Bullsized avatar Bullsized 153 Точки

твоето решение дава 80/100, пак има нещо, което куца...
аз стигнах до 90/100 както Алекс0101 по-горе, но имам друга грешка от твоето решение и не мога да разбера какво аджеба не му харесва на Джъджа...
кво ли не пробвах - едно да е по-голямо от две, обратното, с равнота, едно да е равно на две...
ако някой се сети някакво друго решение да удари едно рамо!

0
fbinnzhivko avatar fbinnzhivko 1586 Точки

100/100 => Най - краткото решение

using System;

class PointOnSegment
{
    static void Main()
    {
        var first = double.Parse(Console.ReadLine());
        var second = double.Parse(Console.ReadLine());
        var point = double.Parse(Console.ReadLine());

        var left = Math.Min(first, second);
        var right = Math.Max(first, second);
        var leftDistance = Math.Abs(point - left);
        var rightDistance = Math.Abs(point - right);
        var distance = Math.Min(leftDistance, rightDistance);

        if ((point >= left) && (point <= right))
        {

            Console.WriteLine("in\n{0}", distance);
        }
        else
        {
            Console.WriteLine("out\n{0}", distance);

        }
    }
}

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