Advertisement
Baxram97

For hh1

Nov 26th, 2023
949
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.45 KB | None | 0 0
  1. using System;
  2.  
  3. public interface IFigure
  4. {
  5.     double CalculateArea();
  6. }
  7.  
  8. public class Circle : IFigure
  9. {
  10.     public double Radius { get; }
  11.  
  12.     public Circle(double radius)
  13.     {
  14.         if (radius <= 0)
  15.         {
  16.             throw new ArgumentException("Радиус должен быть положительным числом.");
  17.         }
  18.  
  19.         Radius = radius;
  20.     }
  21.  
  22.     public double CalculateArea()
  23.     {
  24.         return Math.PI * Math.Pow(Radius, 2);
  25.     }
  26. }
  27.  
  28. public class Triangle : IFigure
  29. {
  30.     public double SideA { get; }
  31.     public double SideB { get; }
  32.     public double SideC { get; }
  33.  
  34.     public Triangle(double sideA, double sideB, double sideC)
  35.     {
  36.         if (!IsValidTriangle(sideA, sideB, sideC))
  37.         {
  38.             throw new ArgumentException("Невозможно создать треугольник с заданными сторонами.");
  39.         }
  40.  
  41.         SideA = sideA;
  42.         SideB = sideB;
  43.         SideC = sideC;
  44.     }
  45.  
  46.     public double CalculateArea()
  47.     {
  48.         double s = (SideA + SideB + SideC) / 2;
  49.         return Math.Sqrt(s * (s - SideA) * (s - SideB) * (s - SideC));
  50.     }
  51.  
  52.     public bool IsRightTriangle()
  53.     {
  54.         double[] sides = { SideA, SideB, SideC };
  55.         Array.Sort(sides);
  56.         return Math.Pow(sides[0], 2) + Math.Pow(sides[1], 2) == Math.Pow(sides[2], 2);
  57.     }
  58.  
  59.     private bool IsValidTriangle(double a, double b, double c)
  60.     {
  61.         return a + b > c && a + c > b && b + c > a;
  62.     }
  63. }
  64.  
  65.  
  66. using Microsoft.VisualStudio.TestTools.UnitTesting;
  67.  
  68. [TestClass]
  69. public class FigureTests
  70. {
  71.     [TestMethod]
  72.     public void CircleAreaCalculation()
  73.     {
  74.         Circle circle = new Circle(5);
  75.         double expectedArea = Math.PI * Math.Pow(5, 2);
  76.         Assert.AreEqual(expectedArea, circle.CalculateArea(), 0.0001);
  77.     }
  78.  
  79.     [TestMethod]
  80.     public void TriangleAreaCalculation()
  81.     {
  82.         Triangle triangle = new Triangle(3, 4, 5);
  83.         double expectedArea = 6;
  84.         Assert.AreEqual(expectedArea, triangle.CalculateArea(), 0.0001);
  85.     }
  86.  
  87.     [TestMethod]
  88.     public void RightTriangleCheck()
  89.     {  
  90.         // Это часть будто не правильно работает…
  91.         Triangle rightTriangle = new Triangle(3, 4, 5);
  92.         Assert.IsTrue(rightTriangle.IsRightTriangle());
  93.  
  94.         Triangle nonRightTriangle = new Triangle(1, 2, 3);
  95.         Assert.IsFalse(nonRightTriangle.IsRightTriangle());
  96.     }
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement