Объектно-ориентированное программирование на С#. Андрианова А.А - 101 стр.

UptoLike

101
switch (coef.Length)
{
case 3:
a = coef[0];
b = coef[1];
c = coef[2];
break;
case 2:
a = 0.0;
b = coef[0];
c = coef[1];
break;
case 1:
a = 0.0;
b = 0.0;
c = coef[0];
break;
default:
throw new Exception("Данный набор
коэффициентов не определяет
рассматриваемые типы уравнений ");
}
if (a == 0)
if (b == 0)
return new Equation_0(c);
else
return new Equation_1(b, c);
else
return new Equation_2(a, b, c);
}
// виртуальный метод печати результата решения уравнения
virtual public void PrintSolution()
{
Console.WriteLine("Уравнение еще не решено,
поскольку не определен тип
уравнения!!!");
}
}
// производный класс уравнений 0-ого порядка
class Equation_0: Equation
{
protected double c;
// переопределенный виртуальный метод решения уравнения
public override void Solve()
{
if (c == 0)
count = infinity;
else
count = 0;
        switch (coef.Length)
        {
           case 3:
              a = coef[0];
              b = coef[1];
              c = coef[2];
              break;
           case 2:
              a = 0.0;
              b = coef[0];
              c = coef[1];
              break;
           case 1:
              a = 0.0;
              b = 0.0;
              c = coef[0];
              break;
           default:
              throw new Exception("Данный набор
                         коэффициентов не определяет
                         рассматриваемые типы уравнений ");
        }
        if (a == 0)
           if (b == 0)
              return new Equation_0(c);
           else
              return new Equation_1(b, c);
        else
          return new Equation_2(a, b, c);
    }

    // виртуальный метод печати результата решения уравнения
    virtual public void PrintSolution()
    {
       Console.WriteLine("Уравнение еще не решено,
                          поскольку не определен тип
                          уравнения!!!");
    }
}

// производный класс уравнений 0-ого порядка
class Equation_0: Equation
{
   protected double c;

    // переопределенный виртуальный метод решения уравнения
    public override void Solve()
    {
       if (c == 0)
          count = infinity;
       else
          count = 0;

                                                               101