ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
• при вычислении обратной матрицы исходная матрица
оказывается вырожденной.
При генерации исключений стандартных типов (целое число или
символьная строка) программисту приходится отслеживать типы
исключений и создавать для каждого из них свой обработчик (см. раздел
1.2). Например, пусть исключения генерируются в классе Matrix при
перемножении или сложении двух матриц в случае несоответствия
размеров.
Matrix Matrix::operator * (Matrix& ob)
{
if(n == ob.m)
{
// перемножение матриц
. . .
}
else
// количество столбцов первой матрицы должно
// быть равно количеству строк второй матрицы
throw "Матрицы таких размеров
перемножать нельзя";
}
Matrix Matrix::operator + (Matrix& ob)
{
if(n == ob.n && m == ob.m)
{
// сложение матриц
. . .
}
else
// размеры матриц должны совпадать
throw 1;
}
Тогда часть кода, проверяюшая наличие этих ошибок, будет иметь
вид:
. . .
try
{
Matrix a(m,n), b(n,k);
cin >> a >> b;
Matrix c = a * b;
cout << "a*b=" << c << endl;
Matrix d = a + b;
139
Объектно-ориентированное программирование на С++
•при вычислении обратной матрицы исходная матрица
оказывается вырожденной.
При генерации исключений стандартных типов (целое число или
символьная строка) программисту приходится отслеживать типы
исключений и создавать для каждого из них свой обработчик (см. раздел
1.2). Например, пусть исключения генерируются в классе Matrix при
перемножении или сложении двух матриц в случае несоответствия
размеров.
Matrix Matrix::operator * (Matrix& ob)
{
if(n == ob.m)
{
// перемножение матриц
. . .
}
else
// количество столбцов первой матрицы должно
// быть равно количеству строк второй матрицы
throw "Матрицы таких размеров
перемножать нельзя";
}
Matrix Matrix::operator + (Matrix& ob)
{
if(n == ob.n && m == ob.m)
{
// сложение матриц
. . .
}
else
// размеры матриц должны совпадать
throw 1;
}
Тогда часть кода, проверяюшая наличие этих ошибок, будет иметь
вид:
. . .
try
{
Matrix a(m,n), b(n,k);
cin >> a >> b;
Matrix c = a * b;
cout << "a*b=" << c << endl;
Matrix d = a + b;
139
Страницы
- « первая
- ‹ предыдущая
- …
- 137
- 138
- 139
- 140
- 141
- …
- следующая ›
- последняя »
