Заказать лабораторную работу на С++ (Гомель)
ЛАБОРАТОРНАЯ РАБОТА №7. ОБРАБОТКА ИСКЛЮЧЕНИЙ
1) Создайте иерархию классов для представления исключений математических операций. Например:
//математические исключения
class MathException
{
char op_name[20]; //имя операции
long val1; //значение левого операнда операции
long val2; //значение правого операнда операции
public:
MathException(char * name_op, long v1, long v2);
virtual char * Message() = 0;
};
//переполнение сверху
class OverflowException : public MathException {/*...*/};
//переполнение сверху
class UnderflowException : public MathException {/*...*/};
//деление на 0
class ZdivideException : public MathException {/*...*/};
В производных классах необходимо определить конструкторы и переопределить функцию Message(), которая должна возвращать информацию о произошедшей ошибке.
Разработайте класс
class Math
{
public:
long Add(long a, long b); //сложение (a + b)
long Sub(long a, long b); //вычитание (a - b)
long Mul(long a, long b); //умножение (a * b)
long Div(long a, long b); //деление (a / b)
long Mod(long a, long b); //остаток от деления (a % b)
};
Каждая функция должна отслеживать исключительные ситуации при выполнении операций и генерировать исключение соответствующего типа.
В функции main поместите в блоки try...catch() вызовы функций с различными операндами.
2) Создайте иерархию классов для представления исключений файловых операций. Например:
//файловые исключения
class FileException
{
HANDLE hfile[30]; //дескриптор файла
char filename[256]; //имя файла
public:
FileException(char * fname);
FileException(HANDLE hf);
virtual char * Message() = 0;
};
//ошибка при создании файла
class CreateException : public FileException {/*...*/};
//ошибка открытия файла
class OpenException : public FileException {/*...*/};
//ошибка чтения
class ReadException : public FileException {/*...*/};
//ошибка записи
class WriteException : public FileException {/*...*/};
В производных классах необходимо определить конструкторы и переопределить функцию Message(), которая должна возвращать информацию о произошедшей ошибке.
Разработайте класс
#include
class File
{
HANDLE CreateFile(char *);//создание нового файла (R/W)
HANDLE OpenFile(char *); //открытие существующего файла (R/W)
//чтение данных из файла
void ReadFile(HANDLE hf, void * buf, int count);
//запись данных в файл
void WriteFile(HANDLE hf, void * buf, int count);
};
Каждая функция должна отслеживать исключительные ситуации при выполнении операций и генерировать исключение соответствующего типа.
В функции main поместите в блоки try...catch() вызовы функций класса File.
3) Создайте иерархию классов для представления исключений трансцендентных операций. Например:
//трансцендентные исключения (см задание 1)
class TranscException
{
double value;
char opname[20];
public:
TranscException(char * nameop, double val);
virtual char * Message() = 0;
};
//исключения логарифмических функций
class LogException : public TranscException;
//исключения тригонометрических функций
class TrigException : public TranscException;
Разработайте класс
class Trans
{
public:
double Sin(double angle); //синус
double Cos(double angle); //косинус
double Tan(double angle); //тангенс
double Asin(double sn); //арксинус
double Acos(double cs); //арккосинус
double Atan(double tg); //арктангенс
double Ln(double value); //натуральный логарифм
double Lg(double value); //десятичный логарифм
};
Каждая функция должна отслеживать исключительные ситуации при выполнении операций и генерировать исключение соответствующего типа.
В функции main поместите в блоки try...catch() вызовы функций с различными операндами.
|
|
ЛАБОРАТОРНАЯ РАБОТА №1. ПЕРЕХОД ОТ ЯЗЫКА С К ЯЗЫКУ С++
ЛАБОРАТОРНАЯ РАБОТА №2. КЛАССЫ
ЛАБОРАТОРНАЯ РАБОТА №3. ОБЪЕКТЫ КЛАССОВ
ЛАБОРАТОРНАЯ РАБОТА №4. ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАТОРОВ
ЛАБОРАТОРНАЯ РАБОТА №5. ПРОИЗВОДНЫЕ КЛАССЫ И ИЕРАРХИИ КЛАССОВ
ЛАБОРАТОРНАЯ РАБОТА №6. ШАБЛОНЫ
ЛАБОРАТОРНАЯ РАБОТА №7. ОБРАБОТКА ИСКЛЮЧЕНИЙ
ЛАБОРАТОРНАЯ РАБОТА №8. ДИНАМИЧЕСКАЯ ИДЕНТИФИКАЦИЯ И ПРИВЕДЕНИЕ ТИПА
Вы на сайте:
Student.Gomel.by
|