Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 52 стр.

UptoLike

51
// индексатор для получения коэффициента полинома по степени
double this[int i]
{
get { return a[i]; }
set { a[i] = value; }
}
// операция получения строкового представления полинома
public static implicit operator string(Polynom ob)
{
string str = "";
for (int i = ob.n; i >0; i--)
str = str + string.Format("{0}*x^{1}+", ob[i], i);
str = str + string.Format("{0}\n", ob[0]);
return str;
}
// функция формирования полинома из
// строки с коэффициентами полинома
public static Polynom Parse(string str)
{
// разделение коэффициентов полинома в строке
string[] s = str.Split(' ');
// формирование полинома по количеству элементов в
// массиве строк
Polynom res = new Polynom(s.Length - 1);
for (int i = 0; i < s.Length; i++)
res[i] = double.Parse(s[s.Length - 1 - i]);
return res;
}
Наконец, опишем те операции, которые следует определить согласно
интерфейсу IMathObject.
// функция получения строки, представляющей полином
public override string ToString()
{
// вызов оператора преобразования полинома в строку
return this;
}
// функция суммирования двух полиномов
public IMathObject Summa(IMathObject ob)
{
Polynom ob1 = ob as Polynom;
if (n > ob1.n)
{
// степень первого полинома больше, чем второго
     // индексатор для получения коэффициента полинома по степени
     double this[int i]
     {
        get { return a[i]; }
        set { a[i] = value; }
     }

     // операция получения строкового представления полинома
     public static implicit operator string(Polynom ob)
     {
        string str = "";
        for (int i = ob.n; i >0; i--)
           str = str + string.Format("{0}*x^{1}+", ob[i], i);
        str = str + string.Format("{0}\n", ob[0]);
        return str;
     }

     // функция формирования полинома из
     // строки с коэффициентами полинома
     public static Polynom Parse(string str)
     {
        // разделение коэффициентов полинома в строке
        string[] s = str.Split(' ');
        // формирование полинома по количеству элементов в
        // массиве строк
        Polynom res = new Polynom(s.Length - 1);
        for (int i = 0; i < s.Length; i++)
           res[i] = double.Parse(s[s.Length - 1 - i]);
        return res;
     }

     Наконец, опишем те операции, которые следует определить согласно
интерфейсу IMathObject.

     // функция получения строки, представляющей полином
     public override string ToString()
     {
        // вызов оператора преобразования полинома в строку
        return this;
     }

     // функция суммирования двух полиномов
     public IMathObject Summa(IMathObject ob)
     {
        Polynom ob1 = ob as Polynom;
        if (n > ob1.n)
        {
           // степень первого полинома больше, чем второго

51