Suren97 Ответов: 2

C# как сравнить два треугольника с оператором >


У меня есть класс треугольника, мне нужно сравнить два треугольника друг с другом,я пытался, но это дало мне ошибку.В чем моя ошибка?

Что я уже пробовал:

class Triangle
    {
        public int koxm1;
        public int koxm2;
        public int koxm3;
        public Triangle(int a, int b, int c)
        {
            this.koxm1 = a;
            this.koxm2 = b;
            this.koxm3 = c;
        }
        static public bool operator>(Erankyun a, Erankyun b)
        {
            return a.koxm1 + a.koxm2 + a.koxm3 > b.koxm1 + b.koxm2 + b.koxm3;
        }
    }


 static void Main(string[] args)
{
Erankyun e1 = new Erankyun(1,2,3);
Erankyun e2 = new Erankyun(1,4,3);

Console.WriteLine(e1 > e2); // false
}

Maciej Los

Вам нужно будет проверить, можно ли создать треугольник: Как определить, являются ли три длины сторон треугольником
Эти длины (1, 2, 3) не могут создать треугольник.

Richard MacCutchan

Я же говорил тебе вчера, что 1+2+3 никогда не может быть больше, чем 1+4+3-да. Почему вы думаете, что повторная публикация вопроса каким-то образом изменит законы математики?

johannesnestler

таким образом, ваша реализация показывает правильный результат: 1+2+3 > 1+4+3 == 6 > 8 -> ложь. Итак, что не так-это не ваш код и не результат. Что неправильно, так это ваше понимание сравнения треугольников. Другие объясняли это, но, похоже, вы не знаете о самых основных понятиях геометрии. Может быть, вы еще ребенок? Нет проблем, но я думаю, что вы можете узнать, что вам не хватает в интернете - некоторые Вики-чтения или YouTube могут помочь. Но не задавайте вопросов на форуме программирования - потому что здесь у вас нет ошибки кодирования...

2 Ответов

Рейтинг:
2

phil.o

Что ж, 1 + 2 + 3 < 1 + 4 + 3, таким образом e1 > e2 ложный.
Более того, треугольник определяется 3 точки; каждая точка, имеющая две составляющие, не может определить треугольник только с тремя скалярными значениями. Вам нужно три точки, или 6 скалярных значений.
Я бы добавил, что вся идея сравнивать два треугольника ошибочна. Подумайте об этом: в реальном мире у вас есть несколько способов сравнения геометрических фигур: вы можете сравнить их площади, или вы можете сравнить по одной из их координат-скалярные значения. Но общего понятия геометрического сравнения не существует, то есть множество возможных значений координат само по себе не является упорядоченным полем.
Возможно, вам придется сделать шаг назад и подумать о том, что вы действительно намереваетесь сделать из сравнения геометрических фигур.


Suren97

Я ничего не понимаю :)

phil.o

Например, разве вы не понимаете, что треугольник имеет 3 точки, то есть 6 скалярных значений? И что вы не можете определить треугольник только по трем скалярным значениям?

Suren97

Какие 6 скалярных значений?

phil.o

Ты становишься вампиром-помощником. Я не чувствую, что вы пытаетесь понять, вы просто повторяете "Я не понимаю", но не показываете никаких попыток понять вообще.

Suren97

я действительно не понимаю, что вы имеете в виду ,я пробовал то же самое с оператором+, это сработало, но оператор> не работает

phil.o

Возьмите его с самого начала. Сколько точек имеет треугольник?

Suren97

3

phil.o

Хорошо. И как любые скалярные значения вам нужно определить одну единственную точку (предполагая 2D-пространство)?

Suren97

Я не знаю :(

phil.o

Ну что ж, вам нужно два скалярные значения для определения одной точки в 2D-пространстве. Например, (4,3) определяет точку с 4, как его X-координата по оси и 3, так как ее координата по оси Y.
Таким образом, учитывая, что треугольник нуждается в 3 точках, которые должны быть определены однозначно, и что каждая из этих точек нуждается в свою очередь в двух скалярных значениях, которые также должны быть определены однозначно, треугольник нуждается в 6 скалярных значениях. Ты понимаешь это?
Пожалуйста, взгляните на Двумерное пространство.

Suren97

Я снова ничего не понимаю, но ничего, Спасибо, что хочешь мне помочь :)

phil.o

Чего же ты не понимаешь?

pt1401

@phil.o: ОП пытается сравнить окружность двух треугольников, если вы посмотрите на его попытку кодирования.
Для этого положение треугольников не имеет никакого значения, поэтому вам не нужны точки дерева для каждого треугольника, просто три длины.
Таким образом, требуется три скалярных значения, а не шесть.

phil.o

Проблема заключается в том, что значения (1,2,3) не могу определите длину сторон треугольника. Как правильно указано в предыдущих комментариях, OP имеет не проблему кодирования, а проблему математического понимания.

Рейтинг:
0

OriginalGriff

Что определяет два треугольника как "больше" и "меньше"? Это периметр? Области? В каком месте? Единственное, что мы знаем, это то, что это не "сумма трех углов", потому что это всегда одно и то же значение, учитывая неискаженное пространство-время.

Площадь треугольника равна 0,5 * b * h, где b-длина "базовой стороны", а h - "высота" от этой базовой стороны самой длинной перпендикулярной линии.
Периметр-это сумма трех длин линий, которые вы, вероятно, сравниваете.

Но для начала "сравнения треугольников" вам нужно сначала точно определить, какую меру вы собираетесь использовать!

И ваше определение "треугольника" не является хорошим: три единичных значения могут определить треугольник, но не если они являются целыми числами: в то время как 3, 4, 5 определяет действительный треугольник, и вы можете вычислить углы и т. д. Из этого, что работает только в особых случаях; не все треугольники могут быть сохранены таким образом: большинство не будет иметь целочисленных длин для трех линий.

Что вам нужно сделать, так это сохранить три точки (опять же, они, вероятно, лучше всего хранятся не как int, а double) и точно решить, какую меру вы хотите сравнить: маршрут, который вы выбрали до сих пор, в корне ошибочен.


Suren97

Я не понимаю, что мне нужно делать?

OriginalGriff

Чего ты не понимаешь? Имейте в виду, что я получаю только то, что вы вводите для работы, я не получаю никакого другого контекста, например "мне 8 лет и я не знаю, что такое треугольник", чтобы "как я могу получить свой класс треугольника из моего класса Shape, учитывая, что Shape хранит себя в моей базе данных MySql?" Я понятия не имею, чем ты занимаешься и чего не знаешь, Муш меньше поймешь!

И кстати: если это длины линий, которые вы храните, то какой треугольник имеет длину линий (1, 3, 4)?

pt1401

Очень очень тонкий :-)
Но, растягивая точку, это треугольник - три внутренних угла складываются в 180 градусов.