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

UptoLike

50
// конструктор полинома с указанием степени полинома
// и массива коэффициентов
// вызывает первую версию конструктора для выделения
// памяти, копирует массив коэффициентов и осуществляет
// преобразование степени, если коэффициенты при
// старших степенях равны нулю
public Polynom(int n1, double[] coef): this(n1)
{
coef.CopyTo(a,0);
if(a[n] == 0)
PreobrPolynom();
}
// функция устранения нулевых коэффициентов
// при больших степенях
void PreobrPolynom()
{
// поиск максимальной степени
// с ненулевым коэффициентом
for (int i = n-1; i > 0; i++)
if (a[i] != 0)
{
// полином должен иметь i-ую степень,
// создаем новый массив и меняем
// значения полей текущего объекта
double[] b = new double[i + 1];
a.CopyTo(b, i);
a = b;
n = i;
return;
}
// все коэффициенты нулевые – в любом случае получаем
// полином нулевой степени
n = 0;
double c = a[0];
a = new double[1]; a[0] = c;
}
. . .
}
Ввод и вывод полинома определим через символьные строки. Для
этого в класс Polynom добавим операцию преобразования полинома в тип
string и статическую функцию Parse(), которая создает объект
полинома, получая данные из символьной строки, содержащей его
коэффициенты. Для удобства обращения к коэффициентам полинома
создадим индексатор.
      // конструктор полинома с указанием степени полинома
      // и массива коэффициентов
      // вызывает первую версию конструктора для выделения
      // памяти, копирует массив коэффициентов и осуществляет
      // преобразование степени, если коэффициенты при
      // старших степенях равны нулю
      public Polynom(int n1, double[] coef): this(n1)
      {
         coef.CopyTo(a,0);
         if(a[n] == 0)
            PreobrPolynom();
      }

       // функция устранения нулевых коэффициентов
       // при больших степенях
       void PreobrPolynom()
       {
          // поиск максимальной степени
          // с ненулевым коэффициентом
          for (int i = n-1; i > 0; i++)
             if (a[i] != 0)
             {
                // полином должен иметь i-ую степень,
                // создаем новый массив и меняем
                // значения полей текущего объекта
                double[] b = new double[i + 1];
                a.CopyTo(b, i);
                a = b;
                n = i;
                return;
             }
          // все коэффициенты нулевые – в любом случае получаем
          // полином нулевой степени
          n = 0;
          double c = a[0];
          a = new double[1]; a[0] = c;
       }
      . . .
  }

      Ввод и вывод полинома определим через символьные строки. Для
этого в класс Polynom добавим операцию преобразования полинома в тип
string и статическую функцию Parse(), которая создает объект
полинома, получая данные из символьной строки, содержащей его
коэффициенты. Для удобства обращения к коэффициентам полинома
создадим индексатор.


                                                                  50