Реализация метода 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д