Реализация метода 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();
}
}
}