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

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

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

Программа должна считать периметр и длину стороны Сторону считает а периметр нет
Листинг программы
  1. class Point
  2. {
  3. double x, y;
  4. string name;
  5. public Point(double x, double y, string name)
  6. {
  7. this.x = x;
  8. this.y = y;
  9. this.name = name;
  10. }
  11. public double X
  12. {
  13. get
  14. {
  15. return x;
  16. }
  17.  
  18. }
  19. public double Y
  20. {
  21. get
  22. {
  23. return y;
  24. }
  25.  
  26. }
  27. public string Name
  28. {
  29. get
  30. {
  31. return name;
  32. }
  33.  
  34. }
  35. }
  36. class Figure
  37. {
  38. Point[] Points;
  39. string name;
  40. public Figure(Point p1,Point p2,Point p3)
  41. {
  42. Points = new Point[3];
  43. Points[0] = p1;
  44. Points[1] = p2;
  45. Points[2] = p3;
  46. this.name = "Triangle";
  47. }
  48. public Figure(Point p4) : base(){
  49. Points = new Point[4];
  50. Points[3] = p4;
  51. this.name = "Rectangle";
  52. }
  53. public Figure(Point p4,Point p5) : base()
  54. {
  55. Points = new Point[5];
  56. Points[3] = p4;
  57. Points[4] = p5;
  58. this.name = "Pentageon";
  59. }
  60. public double LengthSide(Point A,Point B)
  61. {
  62. double result= Math.Sqrt(Math.Pow(B.X - A.X, 2) + Math.Pow(B.Y - A.Y, 2));
  63. Console.WriteLine(result);
  64. return result;
  65. }
  66. public double PerimeterCalculator()
  67. {
  68. double length = 0;
  69. for(int i = 0; i < Points.Length; i++)
  70. {
  71. double len = LengthSide(Points[i], Points[i++]);
  72. length += len;
  73. }
  74. Console.WriteLine(length);
  75. Console.WriteLine(name);
  76. return length;
  77. }
  78. }
  79.  
  80. class Program
  81. {
  82. static void Main(string[] args)
  83. {
  84. Point p1 = new Point(0, 5,"first");
  85. Point p2 = new Point(5, 0, "second");
  86. Point p3 = new Point(-5, 0, "third");
  87. Figure figure = new Figure(p1, p2, p3);
  88. figure.LengthSide(p1, p2);
  89. Console.WriteLine();
  90. figure.PerimeterCalculator();
  91. }
  92. }
Разобрался

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

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

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


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

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

6   голосов , оценка 4.333 из 5

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

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

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