Не могу найти ошибку в подсчете периметра - C#

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

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

Программа должна считать периметр и длину стороны Сторону считает а периметр нет
class Point
    {
        double x, y;
        string name;
 
        public Point(double x, double y, string name)
        {
            this.x = x;
            this.y = y;
            this.name = name;
        }
 
        public double X
        {
            get
            {
                return x;
            }

        }
 
        public double Y
        {
            get
            {
                return y;
            }

        }
 
        public string Name
        {
            get
            {
                return name;
            }

        }
    }
 
    class Figure
    {
        Point[] Points;
 
        string name;
 
        public Figure(Point p1,Point p2,Point p3)
        {
            Points = new Point[3];
            Points[0] = p1;
            Points[1] = p2;
            Points[2] = p3;
            this.name = "Triangle";
           
        }
        public Figure(Point p4) : base(){
            Points = new Point[4];
            Points[3] = p4;
            this.name = "Rectangle";
        }
        public Figure(Point p4,Point p5) : base()
        {
            Points = new Point[5];
            Points[3] = p4;
            Points[4] = p5;
            this.name = "Pentageon";
        }
 
        public double LengthSide(Point A,Point B)
        {
            double result= Math.Sqrt(Math.Pow(B.X - A.X, 2) + Math.Pow(B.Y - A.Y, 2));
            Console.WriteLine(result);
            return result;
            
        }
        public double PerimeterCalculator()
        {
            double length = 0;
           for(int i = 0; i < Points.Length; i++)
            {
                
                double len = LengthSide(Points[i], Points[i++]);
                length += len;
            }
            Console.WriteLine(length);
            Console.WriteLine(name);
            return length;
            
        }
 
    }

    class Program
    {
        static void Main(string[] args)
        {
            Point p1 = new Point(0, 5,"first");
            Point p2 = new Point(5, 0, "second");
            Point p3 = new Point(-5, 0, "third");
 
            Figure figure = new Figure(p1, p2, p3);
            figure.LengthSide(p1, p2);
            Console.WriteLine();
            figure.PerimeterCalculator();
           
        }
    }
Разобрался

Решение задачи: «Не могу найти ошибку в подсчете периметра»

textual
Листинг программы
        public double PerimeterCalculator()
        {
            double length = 0;
            double len;
            for (int i = 0; i < Points.Length - 1; i++) //  // обратите внмание Points.Length - 1
            {
                len = LengthSide(Points[i], Points[i + 1]); // i не увеличивается
                length += len;
            }
            len = LengthSide(Points[0], Points[Points.Length - 1]);         // здест расчитыается длина последней стороный, т.е Points[0] и Points[2]
            length += len;
            Console.WriteLine("Length = " + length);
            return length;
        }

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


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

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

6   голосов , оценка 4.333 из 5
Похожие ответы