public static void Main()
double a = GetDoubleValueFromUser("A");
double b = GetDoubleValueFromUser("B");
double c = GetDoubleValueFromUser("C");
if (a == -100 || b == -100 || c == -100)
Console.WriteLine("Podano błędne wartości!");
else if(!CheckIfTriangle(a,b,c))
Console.WriteLine("Podane wartości nie tworzą trójkąta!");
Triangle trk = new Triangle(a, b, c);
trk.CalcTrianglePerimeter();
trk.CalcTriangleHeight();
Console.WriteLine(trk.ToString());
private static double GetDoubleValueFromUser(string pointName)
Console.WriteLine("Podaj bok " + pointName + ": ");
string line = Console.ReadLine();
if(double.TryParse(line, out point))
private static bool CheckIfTriangle(double a, double b, double c)
return (a + b) > c && (a + c) > b && (b + c) > a;
public double SideA { get { return a; } }
public double SideB { get { return b; } }
public double SideC { get { return c; } }
public double Height { get { return height; } }
public double Area { get { return area; } }
public TriangleType Type { get { return type; } }
public double Perimeter { get { return perimeter; } }
private TriangleType type;
private double perimeter;
public Triangle(double a, double b, double c)
public void CalcTrianglePerimeter()
public void CalcTriangleArea()
area = (Math.Sqrt((a + b + c) * (a + b - c) * (a - b + c) * (-a + b + c)) / 4);
public void CalcTriangleHeight()
public void CalcTriangleType()
if(((Math.Pow(a, 2)) + (Math.Pow(b, 2))) == (Math.Pow(c, 2)))
type = TriangleType.RIGHT;
else if (a == b && b == c)
type = TriangleType.EQUILATERAL;
else if (a == b || a == c || c == b)
type = TriangleType.ISOSCELES;
else if (a != b && b != c && c != a)
type = TriangleType.SCALENE;
type = TriangleType.UNKNOWN;
public override string ToString()
return "Trójkąt " + GetTriangleTypeString() + ", o bokach a: " + a + " b: " + b + " c: " + c + Environment.NewLine + "Pole: " + area + Environment.NewLine + "Obwód: " + perimeter + Environment.NewLine + "Wysokość: " + height;
private string GetTriangleTypeString()
case TriangleType.EQUILATERAL:
case TriangleType.ISOSCELES:
case TriangleType.SCALENE:
return "różnoboczny (ostrokątny lub rozwartokątny)";
return "niezdefiniowany";