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

UptoLike

75
// формирование списка вызова для решения уравнения –
// сначала определяется тип уравнения, далее
// уравнение решается, в конце печатается результат
SolveEquation += DefineTypeEquation;
SolveEquation += Solve;
SolveEquation += PrintSolution;
}
// метод определения типа уравнения
void DefineTypeEquation()
{
if (a == 0)
if (b == 0)
// уравнение 0-ого порядка
type = 0;
else
// линейное уравнение
type = 1;
else
// квадратное уравнение
type = 2;
}
// метод определения способа решения
// в зависимости от типа уравнения
void Solve()
{
switch (type)
{
case 0: NullSolve(); break;
case 1: LinSolve(); break;
case 2: QSolve(); break;
}
}
// решение квадратного уравнения
void QSolve()
{
double disc = b * b - 4 * a * c;
if (disc < 0.0)
count = 0;
else if (disc == 0.0)
{
count = 1;
x1 = -b / (2 * a);
x2 = x1;
}
else
{
count = 2;
x1 = (-b + Math.Sqrt(disc)) / (2 * a);
x2 = (-b - Math.Sqrt(disc)) / (2 * a);
    // формирование списка вызова для решения уравнения –
    // сначала определяется тип уравнения, далее
    // уравнение решается, в конце печатается результат
    SolveEquation += DefineTypeEquation;
    SolveEquation += Solve;
    SolveEquation += PrintSolution;
}

// метод определения типа уравнения
void DefineTypeEquation()
{
   if (a == 0)
      if (b == 0)
         // уравнение 0-ого порядка
         type = 0;
      else
         // линейное уравнение
         type = 1;
   else
      // квадратное уравнение
      type = 2;
}

// метод определения способа решения
// в зависимости от типа уравнения
void Solve()
{
   switch (type)
   {
      case 0: NullSolve(); break;
      case 1: LinSolve(); break;
      case 2: QSolve(); break;
   }
}

// решение квадратного уравнения
void QSolve()
{
   double disc = b * b - 4 * a * c;

    if (disc < 0.0)
       count = 0;
    else if (disc == 0.0)
         {
            count = 1;
            x1 = -b / (2 * a);
            x2 = x1;
         }
         else
         {
            count = 2;
            x1 = (-b + Math.Sqrt(disc)) / (2 * a);
            x2 = (-b - Math.Sqrt(disc)) / (2 * a);
                                                       75