Реализовать интерфейс IComparable и перегрузить операции отношения для реализации семантики - C#

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

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

Нужно в программу добавить реализацию интерфейса IComparable и перегрузить операции отношения для реализации семантики.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Lab_09
  7. {
  8. class Point
  9. {
  10. public double x=2, y=2;
  11. public Point()
  12. {
  13. this.x = 3;
  14. this.y = 3;
  15. }
  16. public Point (double x, double y)
  17. {
  18. this.x = x;
  19. this.y = y;
  20. }
  21. public double GetX() //Метод получения координаты x
  22. {
  23. return x;
  24. }
  25. public double GetY() //Метод получения координаты y
  26. {
  27. return y;
  28. }
  29. virtual public void Data()
  30. {
  31. Console.WriteLine("Point: x={0}, y={1};", x, y);
  32. }
  33. virtual public void ChangeCo()
  34. {
  35. x = 15;
  36. y = 20;
  37. }
  38. }
  39. class ColoredPoint : Point
  40. {
  41. private string colour;
  42. public ColoredPoint()
  43. {
  44. this.colour = "white";
  45. }
  46. public ColoredPoint(double x, double y, string colour) : base(x, y)
  47. {
  48. this.colour = "white";
  49. }
  50. override public void Data()
  51. {
  52. Console.WriteLine("ColoredPoint: x={0}, y={1}, colour={2};", x, y, colour);
  53. }
  54. override public void ChangeCo()
  55. {
  56. x = 22;
  57. y = 12;
  58. colour = "gray";
  59. }
  60. }
  61. class Line: Point
  62. {
  63. public double x1, y1;
  64. public Line() //Конструктор по умолчанию
  65. {
  66. this.x1 = 1;
  67. this.y1 = 1;
  68. }
  69. public Line(double x, double y, double x1, double y1) : base(x, y)
  70. {
  71. this.x1 = x1;
  72. this.y1 = y1;
  73. }
  74. override public void Data()
  75. {
  76. Console.WriteLine("Line: x={0}, y={1}, x1={2}, y1={3};", x, y, x1, y1);
  77. }
  78. override public void ChangeCo()
  79. {
  80. x = 2;
  81. y = 4;
  82. x1 = 4;
  83. y1 = 2;
  84. }
  85. }
  86. class ColoredLine : Line
  87. {
  88. public string colour;
  89. public ColoredLine() /
  90. {
  91. this.colour = "white";
  92. this.x1 = 1;
  93. this.y1 = 1;
  94. }
  95. public ColoredLine(double x, double y, double x1, double y1, string colour) : base(x, y, x1, y1)
  96. {
  97. this.colour = "white";
  98. this.x1 = 1;
  99. this.y1 = 1;
  100. }
  101. override public void Data()
  102. {
  103. Console.WriteLine("ColoredLine: x={0}, y={1}, x1={2}, y1={3}, colour={4};", x, y, x1, y1, colour);
  104. }
  105. override public void ChangeCo()
  106. {
  107. x = 2;
  108. y = 1;
  109. x1 = 2;
  110. y1 = 1;
  111. colour = "blue";
  112. }
  113. }
  114. class PolyLine : Line
  115. {
  116. public double x2, y2, x3, y3, x4, y4;
  117. public PolyLine()
  118. {
  119. this.x1 = 1;
  120. this.y1 = 1;
  121. this.x2 = 2;
  122. this.y2 = 3;
  123. this.x3 = 4;
  124. this.y3 = 5.5;
  125. this.x4 = 2.4;
  126. this.y4 = 1.5;
  127. }
  128. public PolyLine(double x, double y, double x1, double y1, double x2, double y2) : base(x, y, x1, y1)
  129. {
  130. this.x1 = 1;
  131. this.y1 = 1;
  132. this.x2 = 2;
  133. this.y2 = 2;
  134. this.x3 = 4;
  135. this.y3 = 5.5;
  136. this.x4 = 2.4;
  137. this.y4 = 1.5;
  138. }
  139. override public void Data()
  140. {
  141. Console.Write("PolyLine: x{0}={4}, y{0}={5}, x{1}={6}, y{1}={7}, x{2}={8}, y{2}={9}, x{3}={10}, y{3}={11};", 1, 2, 3, 4, x1, y1, x2, y2, x3, y3, x4, y4);
  142. }
  143. override public void ChangeCo()
  144. {
  145. x4 = x4/2;
  146. y4 = y4/2;
  147. x1 = x1/2;
  148. y1 = y1/2;
  149. x2 = x2/2;
  150. y2 = y2/2;
  151. x3 = x3/2;
  152. y3 = y3/2;
  153. }
  154. }
  155. class Program
  156. {
  157. static void Main(string[] args)
  158. {
  159. const int n = 5;
  160. Point[] mas = new Point[n];
  161. mas[0] = new Point(1, 5);
  162. mas[1] = new ColoredPoint(5, 10, "green");
  163. mas[2] = new Line(2, 2, 4, 4);
  164. mas[3] = new ColoredLine(2, 2, 4, 4, "red");
  165. mas[4] = new PolyLine(1, 1, 2, 2, 1.5, 1.5);
  166. foreach (Point elem in mas) elem.Data();
  167. Console.WriteLine();
  168. Console.WriteLine();
  169. Console.WriteLine("Вносятся изменения:\nМасштабирование четырехугольника 4:1\nИзменение координат точек и линий\nИзменение цветов линий и точек\nПоворот линии на 90 градусов");
  170.  
  171. foreach (Point elem in mas) elem.ChangeCo();
  172. Console.WriteLine();
  173. foreach (Point elem in mas) elem.Data();
  174. Console.WriteLine();
  175. Console.Write("Press ENTER to exit...");
  176. Console.Read();
  177. }
  178. }
  179. }

Решение задачи: «Реализовать интерфейс IComparable и перегрузить операции отношения для реализации семантики»

textual
Листинг программы
  1.     class Point  : IComparable<Point>
  2.     {
  3.         ....
  4.  
  5.         public int CompareTo(Point other)
  6.         {
  7.             var d1 = x * x + y * y;
  8.             var d2 = other.x * other.x + other.y * other.y;
  9.             return d1.CompareTo(d2);
  10.         }
  11.  
  12.         public static bool operator >(Point p1, Point p2)
  13.         {
  14.             return p1.CompareTo(p2) > 0;
  15.         }
  16.  
  17.         public static bool operator <(Point p1, Point p2)
  18.         {
  19.             return p1.CompareTo(p2) < 0;
  20.         }
  21.     }

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


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

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

10   голосов , оценка 4.3 из 5

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

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

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