Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева) - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д