Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева) - C#

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

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

Здравствуйте! Скоро сдавать зачет и препод скорее всего попросит написать на листочке реализацию многочлена с помощью класса на основе списка или на основе бинарного дерева или на основе сбалансированного дерева. К тому же надо реализовать все основные арифметические операции плюс дифференцирование и интегрирование. И еще надо написать main для демонстрации возможности программы. Если вам нетрудно не могли бы помочь? C# у нас был только обзорно и я боюсь ошибиться в написании. Спасибо.
пожалуйста, закройте тему. Никто не откликается, я ее перенесу в другой раздел. Спасибо!

Решение задачи: «Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева)»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace PolynomForum
  5. {
  6.     class Program
  7.     {
  8.         public static void Main(string[] args)
  9.         {
  10.             Polynom a = new Polynom(new int[5]{4,5,6,0,2});
  11.             Polynom b = new Polynom(new int[3]{5,0,2});
  12.            
  13.             Console.WriteLine(a.ToString());
  14.             Console.WriteLine(b.ToString());
  15.            
  16.             Polynom c = a + b;
  17.             Console.WriteLine();
  18.             Console.WriteLine(c.ToString());
  19.  
  20.             Console.Write("Press any key to continue . . . ");
  21.             Console.ReadKey(true);
  22.         }
  23.     }
  24.     //Класс описывающий многочлен
  25.     class Polynom
  26.     {
  27.         List<int> _polynom=new List<int>();     //Список элементов (членов)
  28.         int _ExtPolynom=0;                      //Степень многочлена
  29.         //Степень многочлена (количество элементов)
  30.         public int GetExtentPolynom
  31.         {
  32.             get{return _ExtPolynom;}
  33.         }
  34.         //Получение списка элементов
  35.         public List<int> GetItems()
  36.         {
  37.             return _polynom;
  38.         }
  39.         //Индексатор, для возможности обратиться к произвольному элементу многочлена
  40.         public int this [int i]
  41.         {
  42.             get
  43.             {
  44.                 if (i > _polynom.Count-1) return 0;
  45.                 return _polynom[i];
  46.             }
  47.             set
  48.             {
  49.                 if (i > _polynom.Count-1) _polynom[i]=value;
  50.             }
  51.         }
  52.         //Базовые конструкторы
  53.         public Polynom(params int[] items)
  54.         {
  55.             for (int i = 0; i < items.Length; i++)
  56.                 _polynom.Add(items[i]);
  57.             _ExtPolynom=items.Length;
  58.         }
  59.         public Polynom(List<int> items)
  60.         {
  61.             _polynom=items;
  62.             _ExtPolynom=items.Count;
  63.         }
  64.         //Перегрузки операторов (большим является многочлен с большей степенью)
  65.         public static bool operator > (Polynom x, Polynom y)
  66.         {
  67.             if (x.GetExtentPolynom > y.GetExtentPolynom) return true;
  68.             return false;
  69.         }
  70.         public static bool operator < (Polynom x, Polynom y)
  71.         {
  72.             return !(x > y);
  73.         }
  74.        
  75.         public static Polynom operator + (Polynom x, Polynom y)
  76.         {
  77.             if (x < y)
  78.             {
  79.                 Polynom tmp = new Polynom(x.GetItems());
  80.                 x=y;
  81.                 y=tmp;
  82.             }          
  83.             List<int> ResItems = new List<int>();
  84.             int offset=x.GetExtentPolynom-y.GetExtentPolynom;
  85.             for (int i = 0; i < x.GetExtentPolynom; i++)
  86.             {
  87.                 if (i>=offset)ResItems.Add(x[i]+y[i-offset]);
  88.                 else ResItems.Add(x[i]);
  89.             }
  90.                
  91.             Polynom Res=new Polynom(ResItems);
  92.             return Res;
  93.         }
  94.         //Перегрузка базового метода (для более удобного вывода, настраивается по желанию)
  95.         public override string ToString()
  96.         {
  97.             string res = string.Empty;
  98.             for (int i = 0; i < _polynom.Count; i++)
  99.                 res +=_polynom[i] +
  100.                     ((_polynom.Count-(i+1) != 0 ) ? "x"+(_polynom.Count-(i+1)).ToString() : "") +
  101.                     (i != (_polynom.Count-1) ? "+" : "");
  102.            
  103.             return res;
  104.         }  
  105.     }
  106. }

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


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

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

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

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

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

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