Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева) - C#
Формулировка задачи:
Здравствуйте! Скоро сдавать зачет и препод скорее всего попросит написать на листочке реализацию многочлена с помощью класса на основе списка или на основе бинарного дерева или на основе сбалансированного дерева. К тому же надо реализовать все основные арифметические операции плюс дифференцирование и интегрирование. И еще надо написать main для демонстрации возможности программы. Если вам нетрудно не могли бы помочь? C# у нас был только обзорно и я боюсь ошибиться в написании. Спасибо.
пожалуйста, закройте тему. Никто не откликается, я ее перенесу в другой раздел. Спасибо!
Решение задачи: «Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева)»
textual
Листинг программы
using System; using System.Collections.Generic; namespace PolynomForum { class Program { public static void Main(string[] args) { Polynom a = new Polynom(new int[5]{4,5,6,0,2}); Polynom b = new Polynom(new int[3]{5,0,2}); Console.WriteLine(a.ToString()); Console.WriteLine(b.ToString()); Polynom c = a + b; Console.WriteLine(); Console.WriteLine(c.ToString()); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } //Класс описывающий многочлен class Polynom { List<int> _polynom=new List<int>(); //Список элементов (членов) int _ExtPolynom=0; //Степень многочлена //Степень многочлена (количество элементов) public int GetExtentPolynom { get{return _ExtPolynom;} } //Получение списка элементов public List<int> GetItems() { return _polynom; } //Индексатор, для возможности обратиться к произвольному элементу многочлена public int this [int i] { get { if (i > _polynom.Count-1) return 0; return _polynom[i]; } set { if (i > _polynom.Count-1) _polynom[i]=value; } } //Базовые конструкторы public Polynom(params int[] items) { for (int i = 0; i < items.Length; i++) _polynom.Add(items[i]); _ExtPolynom=items.Length; } public Polynom(List<int> items) { _polynom=items; _ExtPolynom=items.Count; } //Перегрузки операторов (большим является многочлен с большей степенью) public static bool operator > (Polynom x, Polynom y) { if (x.GetExtentPolynom > y.GetExtentPolynom) return true; return false; } public static bool operator < (Polynom x, Polynom y) { return !(x > y); } public static Polynom operator + (Polynom x, Polynom y) { if (x < y) { Polynom tmp = new Polynom(x.GetItems()); x=y; y=tmp; } List<int> ResItems = new List<int>(); int offset=x.GetExtentPolynom-y.GetExtentPolynom; for (int i = 0; i < x.GetExtentPolynom; i++) { if (i>=offset)ResItems.Add(x[i]+y[i-offset]); else ResItems.Add(x[i]); } Polynom Res=new Polynom(ResItems); return Res; } //Перегрузка базового метода (для более удобного вывода, настраивается по желанию) public override string ToString() { string res = string.Empty; for (int i = 0; i < _polynom.Count; i++) res +=_polynom[i] + ((_polynom.Count-(i+1) != 0 ) ? "x"+(_polynom.Count-(i+1)).ToString() : "") + (i != (_polynom.Count-1) ? "+" : ""); return res; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д