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

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

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

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

Funtion

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

CompareTo

так, чтобы можно было отсортировать функции по коэффициенту А. Помогите Сам код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{

    abstract class Function
    {
        public abstract double Count(double x);
    }

    class Line : Function
    {
        public readonly double A;
        public readonly double B;
 
        public Line(double a, double b)
        {
            A = a;
            B = b;
        }
 
        public override double Count(double x)
        {
            return A * x + B;
        }
    }

    class Kub : Function
    {
        public readonly double A;
        public readonly double B;
        public readonly double C;
 
        public Kub(double a, double b, double c)
        {
            A = a;
            B = b;
            C = c;
        }
 
        public override double Count(double x)
        {
            return A * x * x + B * x + C;
        }
    }

    class Hyperbola : Function
    {
        public readonly double A;
        public readonly double B;
 
        public Hyperbola(double a, double b)
        {
            A = a;
            B = b;
        }
 
        public override double Count(double x)
        {
            return (A / x) + B;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Function[] func = new Function[3];
            func[0] = new Line(1, 2);
            func[1] = new Kub(3, 4, 5);
            func[2] = new Hyperbola(2, 3);
            double x = 11;
            foreach (Function f in func)
                Console.WriteLine("значение функции {0} для x = {1} равно {2}", f.GetType(), x, f.Count(x));
            Console.ReadLine();
        }
    }
}

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

textual
Листинг программы
using System;
 
namespace ConsoleApplication1
{
 
    abstract class Function : IComparable<Function>
    {
        public abstract double A { get; set; }
        public abstract double B { get; set; }
        public abstract double Count(double x);
 
        public abstract Int32 CompareTo(Function obj);
    }
 
 
 
    class Line : Function
    {
        public sealed override Double A { get; set; }
        public sealed override Double B { get; set; }
 
        public Line(double a, double b)
        {
            A = a;
            B = b;
        }
 
        public override double Count(double x)
        {
            return A * x + B;
        }
 
        public override Int32 CompareTo(Function obj)
        {
            return A.CompareTo(obj.A);
        }
    }
 
 
    class Kub : Function
    {
        public sealed override Double A { get; set; }
        public sealed override Double B { get; set; }
        public readonly double C;
 
        public Kub(double a, double b, double c)
        {
            A = a;
            B = b;
            C = c;
        }
 
        public override double Count(double x)
        {
            return A * x * x + B * x + C;
        }
 
        public override Int32 CompareTo(Function obj)
        {
            return A.CompareTo(obj.A);
        }
    }
 
 
 
    class Hyperbola : Function
    {
        public sealed override Double A { get; set; }
        public sealed override Double B { get; set; }
 
        public Hyperbola(double a, double b)
        {
            A = a;
            B = b;
        }
 
        public override double Count(double x)
        {
            return (A / x) + B;
        }
        public override Int32 CompareTo(Function obj)
        {
            return A.CompareTo(obj.A);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Function[] func = new Function[3];
            func[0] = new Line(1, 2);
            func[1] = new Kub(3, 4, 5);
            func[2] = new Hyperbola(2, 3);
            double x = 11;
            foreach (Function f in func)
                Console.WriteLine("значение функции {0} для x = {1} равно {2}", f.GetType(), x, f.Count(x));
            Array.Sort(func);
            foreach (Function f in func)
                Console.WriteLine("значение функции {0} для x = {1} равно {2}", f.GetType(), x, f.Count(x));
            Console.ReadLine();
        }
    }
}

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


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

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

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