Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева) - 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;
        }   
    }
}

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


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

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

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