Тип данных как структура с функциями - C#
Формулировка задачи:
Тип многочлен от одной переменной, задаваемый степенью многочлена и массивом коэффициентов. Предусмотреть операцию
вычитания .
Как описать/реализовать структурой многочлен?
Решение задачи: «Тип данных как структура с функциями»
textual
Листинг программы
class Program { struct Polynomial { private readonly double[] _coefficients; // Создание полинома на основе коэффициентов. //<param name = "coefficients">Коэффициенты*полинома.</param> public Polynomial(params double[] coefficients) { _coefficients = coefficients; } // Получение или установка значения коэффициента полинома. //<param name = "n">Номер коэффициента.</param> //<returns>Значение коэффициента.</returns> public double this[int n] { get { return _coefficients[n]; } set { _coefficients[n] = value; } } // Степень*полинома. public int Order { get { return _coefficients.Length; } } public override string ToString() { return string.Format("Coefficients:*" + string.Join(";*", _coefficients)); } // Быстрый расчет значения полинома по схеме Горнера. //<param name = "x">Аргумент полинома.</param> //<returns>Значение полинома.</returns> public double Calculate(double x) { int n = _coefficients.Length - 1; double result = _coefficients[n]; for (int i = n - 1; i >= 0; i--) { result = x * result + _coefficients[i]; } return result; } // Вычитание полиномов. public static Polynomial operator -(Polynomial pFirst, Polynomial pSecond) { int itemsCount = Math.Max(pFirst._coefficients.Length, pSecond._coefficients.Length); var result = new double[itemsCount]; for (int i = 0; i < itemsCount; i++) { double a = 0; double b = 0; if (i < pFirst._coefficients.Length) { a = pFirst[i]; } if (i < pSecond._coefficients.Length) { b = pSecond[i]; } result[i] = a - b; } return new Polynomial(result); } } static void Main(string[] args) { Polynomial p1 = new Polynomial(2, 1); Polynomial p2 = new Polynomial(4, 3, 2, 1); Console.WriteLine(p1 - p2); Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д