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

UptoLike

52
Polynom res = new Polynom(n);
for (int i = 0; i < ob1.n + 1; i++)
res[i] = a[i] + ob1[i];
for (int i = ob1.n + 1; i < n + 1; i++)
res[i] = a[i];
// вызов преобразования полинома-результата, если
// коэффициенты при старших степенях обнуляются
if (res[n]==0)
res.PreobrPolynom();
return res;
}
else
{
// степень второго полинома больше, чем у первого
Polynom res = new Polynom(ob1.n);
for (int i = 0; i < n + 1; i++)
res[i] = a[i] + ob1[i];
for (int i = n + 1; i < ob1.n + 1; i++)
res[i] = ob1[i];
// вызов преобразования полинома-результата, если
// коэффициенты при старших степенях обнуляются
if (res[n] == 0)
res.PreobrPolynom();
return res;
}
}
// функция вычитания полиномов
public IMathObject Substract(IMathObject ob)
{
// вычитание осуществляется как сумма полиномов
// второй операнд при этом должен быть умножен на -1
Polynom ob1 = ob as Polynom;
Polynom temp = ob1.Multiply(-1.0) as Polynom;
Polynom res = Summa(temp) as Polynom;
return res;
}
// функция умножения двух полиномов
public IMathObject Multiply(IMathObject ob)
{
Polynom ob1 = ob as Polynom;
Polynom res = new Polynom(n + ob1.n);
for (int i = 0; i < n + 1; i++)
for (int j = 0; j < ob1.n + 1; j++)
res[i + j] += a[i] * ob1[j];
return res;
}
      Polynom res = new Polynom(n);
      for (int i = 0; i < ob1.n + 1; i++)
         res[i] = a[i] + ob1[i];
      for (int i = ob1.n + 1; i < n + 1; i++)
         res[i] = a[i];
      // вызов преобразования полинома-результата, если
      // коэффициенты при старших степенях обнуляются
      if (res[n]==0)
         res.PreobrPolynom();
      return res;
    }
    else
    {
       // степень второго полинома больше, чем у первого
       Polynom res = new Polynom(ob1.n);
       for (int i = 0; i < n + 1; i++)
          res[i] = a[i] + ob1[i];
       for (int i = n + 1; i < ob1.n + 1; i++)
          res[i] = ob1[i];
       // вызов преобразования полинома-результата, если
       // коэффициенты при старших степенях обнуляются
       if (res[n] == 0)
          res.PreobrPolynom();
       return res;
    }
}

// функция вычитания полиномов
public IMathObject Substract(IMathObject ob)
{
   // вычитание осуществляется как сумма полиномов
   // второй операнд при этом должен быть умножен на -1
   Polynom ob1 = ob as Polynom;
   Polynom temp = ob1.Multiply(-1.0) as Polynom;
   Polynom res = Summa(temp) as Polynom;
   return res;
}

// функция умножения двух полиномов
public IMathObject Multiply(IMathObject ob)
{
   Polynom ob1 = ob as Polynom;
   Polynom res = new Polynom(n + ob1.n);
   for (int i = 0; i < n + 1; i++)
      for (int j = 0; j < ob1.n + 1; j++)
         res[i + j] += a[i] * ob1[j];
   return res;
}




                                                           52