Тип данных как структура с функциями - 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();
        }
    }

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


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

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

5   голосов , оценка 3.8 из 5
Похожие ответы