Реализация метода CompareTo для сортировки - C#

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

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

Есть задание: В абстрактном классе

Funtion

реализовать метод

CompareTo

так, чтобы можно было отсортировать функции по коэффициенту А. Помогите Сам код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication1
  7. {
  8.  
  9. abstract class Function
  10. {
  11. public abstract double Count(double x);
  12. }
  13.  
  14. class Line : Function
  15. {
  16. public readonly double A;
  17. public readonly double B;
  18. public Line(double a, double b)
  19. {
  20. A = a;
  21. B = b;
  22. }
  23. public override double Count(double x)
  24. {
  25. return A * x + B;
  26. }
  27. }
  28.  
  29. class Kub : Function
  30. {
  31. public readonly double A;
  32. public readonly double B;
  33. public readonly double C;
  34. public Kub(double a, double b, double c)
  35. {
  36. A = a;
  37. B = b;
  38. C = c;
  39. }
  40. public override double Count(double x)
  41. {
  42. return A * x * x + B * x + C;
  43. }
  44. }
  45.  
  46. class Hyperbola : Function
  47. {
  48. public readonly double A;
  49. public readonly double B;
  50. public Hyperbola(double a, double b)
  51. {
  52. A = a;
  53. B = b;
  54. }
  55. public override double Count(double x)
  56. {
  57. return (A / x) + B;
  58. }
  59. }
  60. class Program
  61. {
  62. static void Main(string[] args)
  63. {
  64. Function[] func = new Function[3];
  65. func[0] = new Line(1, 2);
  66. func[1] = new Kub(3, 4, 5);
  67. func[2] = new Hyperbola(2, 3);
  68. double x = 11;
  69. foreach (Function f in func)
  70. Console.WriteLine("значение функции {0} для x = {1} равно {2}", f.GetType(), x, f.Count(x));
  71. Console.ReadLine();
  72. }
  73. }
  74. }

Решение задачи: «Реализация метода CompareTo для сортировки»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace ConsoleApplication1
  4. {
  5.  
  6.     abstract class Function : IComparable<Function>
  7.     {
  8.         public abstract double A { get; set; }
  9.         public abstract double B { get; set; }
  10.         public abstract double Count(double x);
  11.  
  12.         public abstract Int32 CompareTo(Function obj);
  13.     }
  14.  
  15.  
  16.  
  17.     class Line : Function
  18.     {
  19.         public sealed override Double A { get; set; }
  20.         public sealed override Double B { get; set; }
  21.  
  22.         public Line(double a, double b)
  23.         {
  24.             A = a;
  25.             B = b;
  26.         }
  27.  
  28.         public override double Count(double x)
  29.         {
  30.             return A * x + B;
  31.         }
  32.  
  33.         public override Int32 CompareTo(Function obj)
  34.         {
  35.             return A.CompareTo(obj.A);
  36.         }
  37.     }
  38.  
  39.  
  40.     class Kub : Function
  41.     {
  42.         public sealed override Double A { get; set; }
  43.         public sealed override Double B { get; set; }
  44.         public readonly double C;
  45.  
  46.         public Kub(double a, double b, double c)
  47.         {
  48.             A = a;
  49.             B = b;
  50.             C = c;
  51.         }
  52.  
  53.         public override double Count(double x)
  54.         {
  55.             return A * x * x + B * x + C;
  56.         }
  57.  
  58.         public override Int32 CompareTo(Function obj)
  59.         {
  60.             return A.CompareTo(obj.A);
  61.         }
  62.     }
  63.  
  64.  
  65.  
  66.     class Hyperbola : Function
  67.     {
  68.         public sealed override Double A { get; set; }
  69.         public sealed override Double B { get; set; }
  70.  
  71.         public Hyperbola(double a, double b)
  72.         {
  73.             A = a;
  74.             B = b;
  75.         }
  76.  
  77.         public override double Count(double x)
  78.         {
  79.             return (A / x) + B;
  80.         }
  81.         public override Int32 CompareTo(Function obj)
  82.         {
  83.             return A.CompareTo(obj.A);
  84.         }
  85.     }
  86.  
  87.     class Program
  88.     {
  89.         static void Main(string[] args)
  90.         {
  91.             Function[] func = new Function[3];
  92.             func[0] = new Line(1, 2);
  93.             func[1] = new Kub(3, 4, 5);
  94.             func[2] = new Hyperbola(2, 3);
  95.             double x = 11;
  96.             foreach (Function f in func)
  97.                 Console.WriteLine("значение функции {0} для x = {1} равно {2}", f.GetType(), x, f.Count(x));
  98.             Array.Sort(func);
  99.             foreach (Function f in func)
  100.                 Console.WriteLine("значение функции {0} для x = {1} равно {2}", f.GetType(), x, f.Count(x));
  101.             Console.ReadLine();
  102.         }
  103.     }
  104. }

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


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

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

12   голосов , оценка 4.25 из 5

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

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

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