Loading...
cecosvidovski avatar cecosvidovski 58 Точки

Methods and Debugging - Exercices > 08. Center Point

 С това решение на Methods and Debugging - Exercices > 08. Center Point ми дава 1-ви, 2-ри и 3-ти тест грешни...
Някой може ли да ми каже къде греша и как мога да си поправя грешката? Благодаря предварително :)

using System;
using System.Collections.Generic;

namespace CenterPoint
{
    class Program
    {
        static void Main()
        {
            int x1 = int.Parse(Console.ReadLine());
            int y1 = int.Parse(Console.ReadLine());
            int x2 = int.Parse(Console.ReadLine());
            int y2 = int.Parse(Console.ReadLine());
            string centerPoint = "(" + string.Join(", ", FindClosest(x1, x2, y1, y2).ToArray()) + ")";
            Console.WriteLine(centerPoint);
        }

        static List<int> FindClosest(int x1, int x2, int y1, int y2)
        {
            List<int> numbers = new List<int>();
            if (Math.Abs(x1) >= Math.Abs(x2))
            {
                numbers.Add(x2);
            }
            else if (Math.Abs(x1) < Math.Abs(x2))
            {
                numbers.Add(x1);
            }
            if (Math.Abs(y1) >= Math.Abs(y2))
            {
                numbers.Add(y2);
            }
            else if (Math.Abs(y1) < Math.Abs(y2))
            {
                numbers.Add(y1);
            }
            return numbers;
        }
    }    
}

 

0
Programming Fundamentals 03/10/2016 19:38:48
DStefanow avatar DStefanow 112 Точки
Best Answer

Никъде в условието, не е казано, че входа може да е само int. Смени го на double и ще ти даде 80/100 и грешката ще ти е някъде в логиката, а няма да гърми за Runtime error.

0
DStefanow avatar DStefanow 112 Точки

И като цяло е най- лесно да се направи по Питагорова теорема. Като приемеш че двойките числа ти дават една точка в равнината, при която пускане на пряка отсечка към центъра е логично най- късата дистанция. И можеш да направиш проверка от рода на: 

if(Math.Sqrt(x1 * x1 + y1 * y1) > Math.Sqrt(x2 * x2 + y2 * y2))
 return (x1, y1)- може в лист, да ги печаташ, матрица и каквото друго ти дойде;

else 
 return x2, y2- логиката е същата;

 

1
cecosvidovski avatar cecosvidovski 58 Точки

Мерси за помоща :) Принципно не съм много добър по математика и май там е проблема :)

1
davichonov365 avatar davichonov365 127 Точки

а ако точката лежи на координатната система? 

0
Stanislav.Petrov avatar Stanislav.Petrov 12 Точки

Давам възможно решение, което дава 100/100:

https://pastebin.com/q7pJDV05

0
hristo_skr avatar hristo_skr 2 Точки

Това ми дава,че е ОК :) и простико седи :) https://pastebin.com/tGf5QtMs

0
Julianh12 avatar Julianh12 3 Точки

Значи на Python тая задача дава абсолютно на всичките решения 80/100.Пренаписах всички решения от C# на Python и дава

80/100



x1 = float(input())
y1 = float(input())
x2 = float(input())
y2 = float(input())

def nearest_to_zero(x1, y1, x2, y2):

            x1Abs = abs(x1)
            y1Abs = abs(y1)
            x2Abs = abs(x2)
            y2Abs = abs(y2)
            if(x1Abs + y1Abs <= x2Abs + y2Abs ):
                print(f"({x1:.0f}, {y1:.0f})")
            else:
                print(f"({x2:.0f}, {y2:.0f})")
nearest_to_zero(x1,y1,x2,y2)
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.