Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить простую задачу на c#

denis.kaloev Профи (512), закрыт 3 года назад
Даны действительные числа x1,x2,x3, y1,y2,y3. Принадлежит ли начало
координат треугольнику с вершинами (x1,y1), (x2,y2), (x3,y3)?
Лучший ответ
Остальные ответы
λ Искусственный Интеллект (226234) 3 года назад
могу на с++
портировать на с# не сложно

https://pastebin.com/rBZJK6Bd
denis.kaloevПрофи (512) 3 года назад
А как, подскажите?
λ Искусственный Интеллект (226234) denis.kaloev, здесь нет места объяснять. может быть вам пригодится такой код c# if ((x1 == 0 && y1 == 0) || (x2 == 0 && y2 == 0) || (x3 == 0 && y3 == 0)) Console.WriteLine("одна из вершин в начале координат");
denis.kaloevПрофи (512) 3 года назад
Можете сделать полный код? Я заплачу, если надо
Николай Веселуха Высший разум (360666) 3 года назад
using System;
using System.Globalization;
namespace Answer {
class Program {
static void Main() {
var a = point("A");
var b = point("B");
var c = point("C");
var t = new Triangle(a, b, c);
var at = t.Area();
var sum
= new Triangle(new Point{}, b, c).Area()
+ new Triangle(a, new Point{}, c).Area()
+ new Triangle(a, b, new Point{}).Area();
Console.WriteLine((at - sum) < 1e-15 ? "Да!" : "Нет!");
Console.ReadKey();
}
static double Real(string msg) {
double value;
do {
Console.Write(msg);
} while (!double.TryParse(Console.ReadLine(), NumberStyles.Float, new CultureInfo("ru-RU"), out value));
return value;
}
static Point point(string pn) {
var p = new Point {
X = Real(pn + "x: "),
Y = Real(pn + "y: ")
};
return p;
}
}
public class Point {
public double X { get; set; }
public double Y { get; set; }
public Point() {
X = 0;
Y = 0;
}
public double Length(Point p) {
return Math.Sqrt(Math.Pow(X - p.X, 2) + Math.Pow(Y - p.Y, 2));
}
}
class Triangle {
private Point a, b, c;
public Triangle() {}
public Triangle(Point a, Point b, Point c) {
this.a = a;
this.b = b;
this.c = c;
}
public double Perimeter() {
return a.Length(b) + b.Length(c) + c.Length(a);
}
public double Area() {
var p = Perimeter() / 2;
return Math.Sqrt(p* (p - a.Length(b)) * (p - b.Length(c)) * (p - c.Length(a)));
}
}
}
Похожие вопросы