Вычислить площадь и периметр по координатам. Многоугольники - C#

Узнай цену своей работы

Формулировка задачи:

У треугольника есть координаты, соответственно всех точек : 1 1 2 3 4 1 У прямоугольника задается две координаты левого верхнего и правого нижнего углов: 4 4 7 1 Как по формулам вычислить площадь и периметр? Для треугольника придумал:
Листинг программы
  1. double a = Math.Sqrt((T[2] - T[0]) * (T[2] - T[0]) + (T[3] - T[1]) * (T[3] - T[1]));
  2. //находим длинны 3х сторон (a,b,c)
  3. double perimetr = a+b+c; //периметр нашли
  4. double p = (a + b + c) / 2;
  5. double pl = Math.Sqrt(p * (p - a) * (p - b) * (p - c));//нашли площадь
а как быть с прямоугольником?

Решение задачи: «Вычислить площадь и периметр по координатам. Многоугольники»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Massiv_test
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Triangle triangle = new Triangle(new Point(1, 1), new Point(2, 3), new Point(4, 1));
  11.             Rectangle rectangle = new Rectangle(new Point(4, 4), new Point(7, 1));
  12.  
  13.             List<Figure> figures = new List<Figure>() { triangle, rectangle };
  14.  
  15.             foreach(var item in figures)
  16.             {
  17.                 Console.WriteLine("Square of the {0} = {1}", item.GetType().Name, item.GetSquare());
  18.                 Console.WriteLine("Perimeter of the {0} = {1}\n", item.GetType().Name, item.GetPerimeter());
  19.             }
  20.  
  21.             Console.ReadLine();
  22.         }
  23.  
  24.     }
  25.  
  26.  
  27.     struct Point
  28.     {
  29.         public int x;
  30.         public int y;
  31.  
  32.         public Point(int x, int y)
  33.         {
  34.             this.x = x;
  35.             this.y = y;
  36.         }
  37.     }
  38.  
  39.     abstract class Figure
  40.     {
  41.        public abstract double GetSquare();
  42.        public abstract double GetPerimeter();
  43.  
  44.        protected double GetLength(Point x, Point y)
  45.        {
  46.            return Math.Sqrt(Math.Pow(y.x - x.x, 2) + Math.Pow(y.y - x.y, 2));
  47.        }
  48.     }
  49.     class Triangle : Figure
  50.     {
  51.         private Point x;
  52.         private Point y;
  53.         private Point z;
  54.  
  55.  
  56.  
  57.         public Triangle(Point x, Point y, Point z)
  58.         {
  59.             this.x = x;
  60.             this.y = y;
  61.             this.z = z;
  62.         }
  63.  
  64.         public override double GetSquare()
  65.         {
  66.             double perimeter = GetPerimeter() / 2;
  67.  
  68.             return Math.Sqrt(perimeter * (perimeter - GetLength(x, y)) * (perimeter - GetLength(y, z)) * (perimeter - GetLength(x, z)));
  69.         }
  70.  
  71.         public override double GetPerimeter()
  72.         {
  73.             return GetLength(x, y) + GetLength(y, z) + GetLength(x, z);
  74.         }
  75.     }
  76.     class Rectangle : Figure
  77.     {
  78.         private Point a;
  79.         private Point b;
  80.         private Point c;
  81.         private Point d;
  82.        
  83.         public Rectangle(Point a, Point d)
  84.         {
  85.             this.a = a;
  86.             this.d = d;
  87.             b = new Point(d.x, a.y);
  88.             c = new Point(a.x, d.y);
  89.         }
  90.  
  91.  
  92.         public override double GetPerimeter()
  93.         {
  94.             return (GetLength(a, b) + GetLength(a, d)) * 2;
  95.         }
  96.         public override double GetSquare()
  97.         {
  98.             return GetLength(a, b) * GetLength(a, d);
  99.         }
  100.     }
  101.  
  102.    
  103. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы