Объектно-ориентированное программирование на C++. Андрианова А.А - 198 стр.

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// метод проверки выполнения равенства f(x,y) = b для
// ограничений видов "<=",">=","="
bool Constraint::IsOnBound(Point pt)
{
// для ограничений видов "<",">", "<>"
// равенство не должно выполняться
if(type == l || type == g || type == n)
return false;
// вычисление значения функции в точке
double val = function->Сalculate(pt);
// сравнение с правой частью на выполнение равенства
if (val == b)
return true;
return false;
}
Далее определим методы класса Set. Отметим, что в этом классе
отсутствует метод ввода информации о системе ограничений. Ввод
выполняется в конструкторе класса Set при создании массива
ограничений (в конструкторе каждого ограничения).
// конструктор класса «Множество точек на плоскости»
// с заданным количеством ограничений
Set::Set(int n1)
{
n = n1;
constraints = new Constraint [n];
}
// деструктор класса «Множество точек на плоскости»
Set::~Set()
{
delete [] constraints;
}
// метод проверки, принадлежит ли точка множеству
bool Set::Belongs(Point pt)
{
// точка не принадлежит множеству, если не
// выполняется хотя бы одно из ограничений,
// определяющих множество
for(int i = 0; i < n; i++)
if (!constraints[i].IsExecute(pt))
return false;
return true;
198
                               Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.


      // метод проверки выполнения равенства f(x,y) = b для
      // ограничений видов "<=",">=","="
      bool Constraint::IsOnBound(Point pt)
      {
           // для ограничений видов "<",">", "<>"
           // равенство не должно выполняться
           if(type == l || type == g || type == n)
                return false;
           // вычисление значения функции в точке
           double val = function->Сalculate(pt);
           // сравнение с правой частью на выполнение равенства
           if (val == b)
                return true;
           return false;
      }


    Далее определим методы класса Set. Отметим, что в этом классе
отсутствует метод ввода информации о системе ограничений. Ввод
выполняется в конструкторе класса Set при создании массива
ограничений (в конструкторе каждого ограничения).
      // конструктор класса «Множество точек на плоскости»
      // с заданным количеством ограничений
      Set::Set(int n1)
      {
           n = n1;
           constraints = new Constraint [n];
      }


      // деструктор класса «Множество точек на плоскости»
      Set::~Set()
      {
           delete [] constraints;
      }

      // метод проверки, принадлежит ли точка множеству
      bool Set::Belongs(Point pt)
      {
           // точка не принадлежит множеству, если не
           // выполняется хотя бы одно из ограничений,
           // определяющих множество
           for(int i = 0; i < n; i++)
                if (!constraints[i].IsExecute(pt))
                     return false;
           return true;

198