Написание класса Point в стили Generic - C#

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

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

Добрый день! Помогите разобраться почему не работает метод Distance так как нужно!!!
Листинг программы
  1. using System;
  2. namespace Geometry
  3. {
  4. public abstract class Point<T> : IPoint<T>
  5. {
  6. public abstract T X { get; set; }
  7. public abstract T Y { get; set; }
  8. public T Z { get; set; }
  9. public abstract void Show();
  10. public abstract T GetDistance<T1>(two);
  11. }
  12. }
  13. namespace Geometry
  14. {
  15. interface IPoint<T>
  16. {
  17. T Z { get; set; }
  18. }
  19. }
  20. using System;
  21. namespace Geometry
  22. {
  23. class Point2D<T> : Point<T>
  24. {
  25. protected T x;
  26. protected T y;
  27. public override T X
  28. {
  29. get => x;
  30. set => x = value;
  31. }
  32. public override T Y
  33. {
  34. get => y;
  35. set => y = value;
  36. }
  37. public Point2D() { }
  38. public Point2D(T x, T y)
  39. {
  40. this.x = x;
  41. this.y = y;
  42. }
  43. public override void Show() => Console.WriteLine($"({x}, {y})");
  44. public T GetDistance<T1>(Point2D<T1> two)
  45. {
  46. return (T)(Object)Math.Sqrt(Math.Pow(this.X - two.X, 2) + Math.Pow(this.Y - two.Y, 2));
  47. }
  48. }
  49. }
  50. using System;
  51. namespace Geometry
  52. {
  53. class Point3D<T> : Point2D<T>, IPoint<T>
  54. {
  55. protected T z;
  56. public new T Z
  57. {
  58. get => z;
  59. set => z = value;
  60. }
  61. public Point3D() { }
  62. public Point3D(T x, T y) : base(x, y) { }
  63. public Point3D(T x, T y, T z) : base(x, y) => this.z = z;
  64. public override void Show() => Console.WriteLine($"({x}, {y}, {z})");
  65. public override T GetDistance(Point<T> two)
  66. {
  67. return Math.Sqrt(Math.Pow(X - two.x, 2) + Math.Pow(this.Y - two.Y, 2) + Math.Pow(this.Z - two.Z, 2));
  68. }
  69. }
  70. }

Решение задачи: «Написание класса Point в стили Generic»

textual
Листинг программы
  1.         protected Func<T, T, T> add = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Add); // c = a + b
  2.         protected Func<T, T, T> sub = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Subtract); // c = a - b
  3.         protected Func<T, T, T> pow2 = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Multiply); // c = a * b
  4.         //protected Func<T, T, T> pow = FuncGenerator.CreateFuncFromExpression<T>(ExpressionType.Power); // c = Math.Pow(a, b)

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


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

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

13   голосов , оценка 4.231 из 5

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

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

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