Тип данных как структура с функциями - C#

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

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

Тип многочлен от одной переменной, задаваемый степенью многочлена и массивом коэффициентов. Предусмотреть операцию вычитания . Как описать/реализовать структурой многочлен?

Решение задачи: «Тип данных как структура с функциями»

textual
Листинг программы
  1.     class Program
  2.     {
  3.           struct Polynomial
  4.           {
  5.             private readonly double[] _coefficients;
  6.    
  7.             //  Создание полинома на основе коэффициентов.
  8.  
  9.             //<param name = "coefficients">Коэффициенты*полинома.</param>
  10.             public Polynomial(params double[] coefficients)
  11.             {
  12.                 _coefficients = coefficients;
  13.             }
  14.  
  15.             //  Получение или установка значения коэффициента полинома.
  16.  
  17.             //<param name = "n">Номер коэффициента.</param>
  18.             //<returns>Значение коэффициента.</returns>
  19.             public double this[int n]
  20.             {
  21.                 get { return _coefficients[n]; }
  22.                 set { _coefficients[n] = value; }
  23.             }
  24.  
  25.             //  Степень*полинома.
  26.  
  27.             public int Order
  28.             {
  29.                 get { return _coefficients.Length; }
  30.             }
  31.  
  32.             public override string ToString()
  33.             {
  34.                 return string.Format("Coefficients:*" + string.Join(";*", _coefficients));
  35.             }
  36.  
  37.             //  Быстрый расчет значения полинома по схеме Горнера.
  38.  
  39.             //<param name = "x">Аргумент полинома.</param>
  40.             //<returns>Значение полинома.</returns>
  41.             public double Calculate(double x)
  42.             {
  43.                 int n = _coefficients.Length - 1;
  44.                 double result = _coefficients[n];
  45.                 for (int i = n - 1; i >= 0; i--)
  46.                 {
  47.                     result = x * result + _coefficients[i];
  48.                 }
  49.                 return result;
  50.             }
  51.  
  52.             //  Вычитание полиномов.
  53.  
  54.             public static Polynomial operator -(Polynomial pFirst, Polynomial pSecond)
  55.             {
  56.                 int itemsCount = Math.Max(pFirst._coefficients.Length, pSecond._coefficients.Length);
  57.                 var result = new double[itemsCount];
  58.                 for (int i = 0; i < itemsCount; i++)
  59.                 {
  60.                     double a = 0;
  61.                     double b = 0;
  62.                     if (i < pFirst._coefficients.Length)
  63.                     {
  64.                         a = pFirst[i];
  65.                     }
  66.                     if (i < pSecond._coefficients.Length)
  67.                     {
  68.                         b = pSecond[i];
  69.                     }
  70.                     result[i] = a - b;
  71.                 }
  72.                 return new Polynomial(result);
  73.             }
  74.         }
  75.        
  76.         static void Main(string[] args)
  77.         {
  78.             Polynomial p1 = new Polynomial(2, 1);
  79.             Polynomial p2 = new Polynomial(4, 3, 2, 1);
  80.    
  81.             Console.WriteLine(p1 - p2);
  82.             Console.ReadLine();
  83.         }
  84.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы