Не могу найти ошибку в подсчете периметра - 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;
}