1. C# / Говнокод #10321

    +92

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    Console.Write("Введите координату Xm: ");
                double Xm = Convert.ToDouble(Console.ReadLine());
                Console.Write("Введите координату Ym: ");
                double Ym = Convert.ToDouble(Console.ReadLine());
    
                Console.Write("Введите координату Xa: ");
                double Xa = Convert.ToDouble(Console.ReadLine());
                Console.Write("Введите координату Ya: ");
                double Ya = Convert.ToDouble(Console.ReadLine());
    
                Console.Write("Введите координату Xb: ");
                double Xb = Convert.ToDouble(Console.ReadLine());
                Console.Write("Введите координату Yb: ");
                double Yb = Convert.ToDouble(Console.ReadLine());
    
                Console.Write("Введите координату Xc: ");
                double Xc = Convert.ToDouble(Console.ReadLine());
                Console.Write("Введите координату Yc: ");
                double Yc = Convert.ToDouble(Console.ReadLine());
    
                if (
                    ((((Xb - Xa) * Ym + (Xa * Yb - Xb * Ya) - (Yb - Ya) * Xm <= 0) && ((Xb - Xa) * Yc + (Xa * Yb - Xb * Ya) - (Yb - Ya) * Xc <= 0))
                    || (((Xb - Xa) * Ym + (Xa * Yb - Xb * Ya) - (Yb - Ya) * Xm >= 0) && ((Xb - Xa) * Yc + (Xa * Yb - Xb * Ya) - (Yb - Ya) * Xc >= 0)))
    
                    && ((((Xc - Xa) * Ym + (Xa * Yc - Xc * Ya) - (Yc - Ya) * Xm <= 0) && ((Xc - Xa) * Yb + (Xa * Yc - Xc * Ya) - (Yc - Ya) * Xb <= 0))
                    || (((Xc - Xa) * Ym + (Xa * Yc - Xc * Ya) - (Yc - Ya) * Xm >= 0) && ((Xc - Xa) * Yb + (Xa * Yc - Xc * Ya) - (Yc - Ya) * Xb >= 0)))
                    
                    && ((((Xc - Xb) * Ym + (Xb * Yc - Xc * Yb) - (Yc - Yb) * Xm <= 0) && ((Xc - Xb) * Ya + (Xb * Yc - Xc * Yb) - (Yc - Yb) * Xa <= 0))
                    || (((Xc - Xb) * Ym + (Xb * Yc - Xc * Yb) - (Yc - Yb) * Xm >= 0) && ((Xc - Xb) * Ya + (Xb * Yc - Xc * Yb) - (Yc - Yb) * Xa >= 0)))
                    ) Console.WriteLine("Точка ({0}, {1}) входит в треугольник", Xm, Ym);
                else Console.WriteLine("Точка ({0}, {1}) не входит в треугольник", Xm, Ym);
                Console.ReadKey();

    Проверка входит ли точка в треугольник.

    Запостил: maksim_ovcharik, 19 Мая 2012

    Комментарии (8) RSS

    • Можно еще улучшить: заливка - пипетка (в углу) - "отливка"
      Ответить
      • Только здесь другая крайность.
        Может инлайн векторного произведения за компилятор решили сделать?)
        Ответить
    • Хорошо, что только три угла.
      Ответить
      • Ну код отлично масштабируется добавлением двух строк на сторону :) Хотя пара функций тут бы не помешала.
        Ответить
        • Здесь год за дв^W^W^Wстрочка за две идет.
          Ответить
    • И где же LINQ когда он так нужен?!
      Ответить

    Добавить комментарий