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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
cout << " x/y = " << (x / y) << endl;
// выход из цикла, поскольку
// деление прошло успешно
break;
}
// обработчик исключения типа int
catch(int e)
{
// выводим сообщение об ошибке
cout << "Деление на 0" << endl;
}
}
. . .
Один контролируемый блок try {. . .} может быть
предназначен для обработки нескольких видов исключительных
ситуаций. Ниже приведем пример такой обработки при вычислении
обратной матрицы обратная матрица существует только для квадратных
невырожденных матриц. Тогда функция вычисления обратной матрицы
должна генерировать исключения в случаях, когда, во-первых, матрица
является неквадратной и, во-вторых, когда определитель матрицы равен
0.
double** InverseMatrix(double** a, int m, int n)
{
// проверяем, является ли матрица квадратной
if(m != n)
throw "Матрица должна быть квадратной";
// проверяем, является ли матрица вырожденной
// вычисление определителя осуществляет функция
// Determinant (double** , int)
double det = Determinant (a, n);
if(det == 0.0)
throw 0;
// далее должен следовать код
// вычисления обратной матрицы
. . .
}
Программа, которая вычисляет обратную матрицу, должна
содержать блок try {. . .} для выявления указанных выше
исключений и соответствующие обработчики catch.
double** a; // объявление матрицы
int m, n; // количество строк и столбцов матрицы
. . .
14
                              Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
               cout << " x/y = " << (x / y) << endl;
               // выход из цикла, поскольку
               // деление прошло успешно
               break;
          }
          // обработчик исключения типа int
          catch(int e)
          {
               // выводим сообщение об ошибке
               cout << "Деление на 0" << endl;
          }
     }
     .    .    .

    Один контролируемый блок try {. . .} может быть
предназначен для обработки нескольких видов исключительных
ситуаций. Ниже приведем пример такой обработки при вычислении
обратной матрицы – обратная матрица существует только для квадратных
невырожденных матриц. Тогда функция вычисления обратной матрицы
должна генерировать исключения в случаях, когда, во-первых, матрица
является неквадратной и, во-вторых, когда определитель матрицы равен
0.

     double** InverseMatrix(double** a, int m, int n)
     {
          // проверяем, является ли матрица квадратной
          if(m != n)
               throw "Матрица должна быть квадратной";
          // проверяем, является ли матрица вырожденной
          // вычисление определителя осуществляет функция
          // Determinant (double** , int)
          double det = Determinant (a, n);
          if(det == 0.0)
               throw 0;
          // далее должен следовать код
          // вычисления обратной матрицы
          .    .    .
     }

    Программа,     которая вычисляет обратную матрицу, должна
содержать блок try {. . .} для выявления указанных выше
исключений и соответствующие обработчики catch.

     double** a;    // объявление матрицы
     int m, n; // количество строк и столбцов матрицы
     .    .    .

14