.NET 4.x Создать класс Point - C#

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

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

Здравствуйте уважаемые! Помогите выяснить почему программа не работает так как нужно! Создать класс Point, содержащий следующие члены класса: 1. Поля: int x, y; 2. Конструкторы, позволяющие создать экземпляр класса: • с нулевыми координатами; • с заданными координатами. 3. Методы, позволяющие: • вывести координаты точки на экран; • рассчитать расстояние от начала координат до точки; • переместить точку на плоскости на вектор (a, b). 4. Свойство: • позволяющее получить-установить координаты точки (доступное для чтения и записи); • позволяющее умножить координаты точки на скаляр (доступное только для записи). 5. Индексатор, позволяющий по индексу 0 обращаться к полю x, по индексу 1 – к полю y, при других значениях индекса выдается сообщение об ошибке. 6. Перегрузку: • операции ++ (--): одновременно увеличивает (уменьшает) значение полей х и у на 1; • констант true и false: обращение к экземпляру класса дает значение true, если значение полей x и у совпадает, иначе false; • операции бинарный +: одновременно добавляет к полям х и у значение скаляра.
Листинг программы
  1. using static System.Console;
  2. namespace array
  3. {
  4. class Program
  5. {
  6. static void Main()
  7. {
  8. Point one = new Point(); // Вызов конструктора нулевых координат
  9. Point two = new Point(); // Вызов конструктора произвольных координат
  10. Point three = new Point(); // Вызов конструктора задания скаляра
  11. Point foor = new Point(); // Вызов конструктора бинарного оператора " * "
  12. Point five = new Point(); // Вызов конструктора бинарного оператора " * "
  13. one.Show();
  14. two[0] = 5;
  15. two[1] = 5;
  16. two.Show();
  17. three[2] = 1;
  18. three.Skalar();
  19. double res = one.Distance(two);
  20. foor = one * three;
  21. five = two * three;
  22. // Вывод результата расчета растояния между точками
  23. WriteLine($"Растояние между точками: {res}");
  24. //Вывод результата расчета координат на скаляр
  25. WriteLine($"Умножение первых координат на скаляр: {foor}");
  26. WriteLine($"Умножение вторых координат на скаляр: {five}");
  27. //выход из программы
  28. WriteLine();
  29. WriteLine("Нажмите любую клавишу для выхода...");
  30. ReadKey(true);
  31. }
  32. }
  33. }
Листинг программы
  1. using static System.Console;
  2. using static System.Math;
  3. namespace array
  4. {
  5. class Point
  6. {
  7. // Закрытое поле х - инициализация координыты х
  8. private double x;
  9. // Закрытое поле у - инициализация координыты у
  10. private double y;
  11. // Закрытое поле scalar - инициализируя скаляр
  12. private double scalar;
  13. // Конструктор 1 - задающий нулевые координаты
  14. public Point() : this(0, 0) { }
  15. // Конструктор 2 - инициализирующий закрытые поля х и у
  16. public Point(double x, double y)
  17. {
  18. this.x = x;
  19. this.y = y;
  20. }
  21. // Конструктор 3 - инициализирующий закрытое поле scalar
  22. public Point(double scalar)
  23. {
  24. this.scalar = scalar;
  25. }
  26. // Метод Show выводит координаты точек на экран
  27. public void Show()
  28. {
  29. WriteLine($"Координаты точки: х = {x}, у = {y}");
  30. }
  31. // Метод Distancе расчитывает растояние между точками
  32. public double Distance(Point p)
  33. {
  34. return Sqrt(Pow(p.x - x, 2) + Pow(p.y - y, 2));
  35. }
  36. // Метод Skalar выводит скалрное значение
  37. public void Skalar()
  38. {
  39. WriteLine($"Скалярное значение: {scalar}");
  40. }
  41. // Свойство позволяющее получить-установить координаты точки х
  42. private double X
  43. {
  44. get { return this.x; }
  45. set { if (this.x != value) this.x = value; }
  46. }
  47. // Свойство позволяющее получить-установить координаты точки у
  48. private double Y
  49. {
  50. get { return this.y; }
  51. set { if (this.y != value) this.y = value; }
  52. }
  53. // Свойство позволяюшее получить-установить скаляр
  54. public double Scalar
  55. {
  56. get { return this.scalar; }
  57. set { if (this.scalar != value) this.scalar = value; }
  58. }
  59. // Индексатор для обращения свойствам
  60. public double this[int i]
  61. {
  62. get
  63. {
  64. if (i == 0) return X;
  65. else if (i == 1) return Y;
  66. else if (i == 2) return Scalar;
  67. else
  68. {
  69. WriteLine("Недопустимый индекс");
  70. return 0;
  71. }
  72. }
  73. set
  74. {
  75. if (i == 0) X = value;
  76. else if (i == 1) Y = value;
  77. else if (i == 2) Scalar = value;
  78. else WriteLine("Недопустимый индекс");
  79. }
  80. }
  81. // Перегрузк бинарног оператор " * "
  82. public static Point operator * (Point p1, Point p2)
  83. {
  84. Point result = new Point();
  85. result.x = p1.x * p2.scalar;
  86. result.y = p1.y * p2.scalar;
  87. return result;
  88. }
  89. // Перегрузк бинарног оператор " + "
  90. public static Point operator + (Point m)
  91. {
  92. Point xx = new Point(m);
  93. return xx =+ 1;
  94. }
  95. // Перегрузк бинарног оператор " - "
  96. public static Point operator - (Point m)
  97. {
  98. Point xx = new Point(m);
  99. return xx =-1;
  100. }
  101. // Перегрузк унарного оператор " ++ "
  102. public static Point operator ++ (Point o)
  103. {
  104. Point xx = new Point(o);
  105. return xx++;
  106. }
  107. // Перегрузк унарного оператор " ++ "
  108. public static Point operator -- (Point y)
  109. {
  110. Point yy = new Point(y);
  111. return yy--;
  112. }
  113. }
  114. }

Решение задачи: «.NET 4.x Создать класс Point»

textual
Листинг программы
  1. class Point
  2. {
  3.     private double _x;
  4.     private double _y;
  5.  
  6.     public Point(double x, double y)
  7.     {
  8.         _x = x;
  9.         _y = y;
  10.     }
  11.  
  12.     public double MultiplyScalar { set { _x *= value; _y *= value; } }
  13. }
  14.  
  15. .....
  16.  
  17.     Point p = new Point(2, 5);
  18.     p.MultiplyScalar = 3;

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


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

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

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

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

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

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