Вычислить площадь и периметр по координатам. Многоугольники - C#
Формулировка задачи:
У треугольника есть координаты, соответственно всех точек : 1 1 2 3 4 1
У прямоугольника задается две координаты левого верхнего и правого нижнего углов: 4 4 7 1
Как по формулам вычислить площадь и периметр?
Для треугольника придумал:
а как быть с прямоугольником?
Листинг программы
- double a = Math.Sqrt((T[2] - T[0]) * (T[2] - T[0]) + (T[3] - T[1]) * (T[3] - T[1]));
- //находим длинны 3х сторон (a,b,c)
- double perimetr = a+b+c; //периметр нашли
- double p = (a + b + c) / 2;
- double pl = Math.Sqrt(p * (p - a) * (p - b) * (p - c));//нашли площадь
Решение задачи: «Вычислить площадь и периметр по координатам. Многоугольники»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- namespace Massiv_test
- {
- class Program
- {
- static void Main(string[] args)
- {
- Triangle triangle = new Triangle(new Point(1, 1), new Point(2, 3), new Point(4, 1));
- Rectangle rectangle = new Rectangle(new Point(4, 4), new Point(7, 1));
- List<Figure> figures = new List<Figure>() { triangle, rectangle };
- foreach(var item in figures)
- {
- Console.WriteLine("Square of the {0} = {1}", item.GetType().Name, item.GetSquare());
- Console.WriteLine("Perimeter of the {0} = {1}\n", item.GetType().Name, item.GetPerimeter());
- }
- Console.ReadLine();
- }
- }
- struct Point
- {
- public int x;
- public int y;
- public Point(int x, int y)
- {
- this.x = x;
- this.y = y;
- }
- }
- abstract class Figure
- {
- public abstract double GetSquare();
- public abstract double GetPerimeter();
- protected double GetLength(Point x, Point y)
- {
- return Math.Sqrt(Math.Pow(y.x - x.x, 2) + Math.Pow(y.y - x.y, 2));
- }
- }
- class Triangle : Figure
- {
- private Point x;
- private Point y;
- private Point z;
- public Triangle(Point x, Point y, Point z)
- {
- this.x = x;
- this.y = y;
- this.z = z;
- }
- public override double GetSquare()
- {
- double perimeter = GetPerimeter() / 2;
- return Math.Sqrt(perimeter * (perimeter - GetLength(x, y)) * (perimeter - GetLength(y, z)) * (perimeter - GetLength(x, z)));
- }
- public override double GetPerimeter()
- {
- return GetLength(x, y) + GetLength(y, z) + GetLength(x, z);
- }
- }
- class Rectangle : Figure
- {
- private Point a;
- private Point b;
- private Point c;
- private Point d;
- public Rectangle(Point a, Point d)
- {
- this.a = a;
- this.d = d;
- b = new Point(d.x, a.y);
- c = new Point(a.x, d.y);
- }
- public override double GetPerimeter()
- {
- return (GetLength(a, b) + GetLength(a, d)) * 2;
- }
- public override double GetSquare()
- {
- return GetLength(a, b) * GetLength(a, d);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д