![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 25.01.2011
Сообщений: 1
|
![]()
я в программировании чайник,нов университете требуют... не могу написать программу, задание следующее:
1. Определить класс-шаблон с использованием динамического распределения памяти согласно варианту и необходимые конструкторы и операции, включая конструктор копий, операция присваивания и если указано операцию индексации. При выходе за границу, переполнении и т.п. вызвать исключительную ситуацию (определить собственные классы) для информирования программы, вызвавшей метод. 2. Запрограммировать main c тестами (создание объектов и выполнение действий с ним, в т.ч. действие, приводящее к возникновению исключительной ситуации, которую необходимо перехватить) Задание: 9. класс стек элементов заданного типа, размером не более указанного в параметрах конструктора, добавление << и извлечение >> элемента есть такая же написанная программа только не для стека,а для очереди, не могу её переделать... если у кого-то есть время, помогите пожалуйста, вот написанная программа для очереди: #include "stdafx.h" #include <iostream> using namespace std; class Exception { public: enum Error { invalid_value, illegal_value, }; private: Error code; char *message; public: Exception (Error code, char* mes) { this->code = code; int s = strlen(mes); message = new char [s+1]; strcpy(this->message, mes); } Exception (const Exception &ex) { this->code = ex.code; int s = strlen(ex.message); this->message = new char [s+1]; strcpy(this->message, ex.message); } ~Exception() { delete message; } char* getMessage() { return message; } Error getCode(){ return code; } }; template <class TData> class Queue { private: int Size; TData *queue; int MAX; public: Queue(int MAX) { this->Size = 0; this->MAX = MAX; queue = new TData [MAX]; }; Queue (const Queue <TData> &Q){ this->Size = Q.Size; this->MAX = Q.MAX; this->queue = new TData [Q.MAX]; for (int i; i < Q.Size; i++) this->queue[i] = Q.queue[i]; }; ~Queue(){ delete []queue; }; void operator <<(const TData add){ if (Size >= MAX) { char *message = "Queue size can't exceed the maximum"; throw Exception (Exception::invalid_value, message); } queue[Size] = add; Size++; }; Queue operator >>( TData& extract){ if (Size==0){ char *message = "Queue is empty"; throw Exception (Exception::illegal_value, message); } extract = queue[0]; for(int i=0; i<Size; i++){ queue[i] = queue [i+1]; } Size--; return *this; }; void print(){ for(int i=0; i<Size; i++){ cout<<queue[i]<<"\t"; } } }; int main(array<System::String ^> ^args) { Queue <int> queue (2); queue << 1; queue << 2; cout<<"Add an element to the queue\n"; int z; cin>>z; try { queue << z; } catch (Exception &er) { int len = strlen(er.getMessage()) + 1; char *a = new char [len]; strcpy(a, er.getMessage()); cout<<"Error:" <<endl <<a <<endl; } queue.print(); int x; queue >> x; cout<<endl; queue.print(); cout<<125874<<"\n"; Queue <int> queue5 (queue); queue5.print(); int g; cin>>g; return 0; } программируем в Microsoft Visual C++ ,2010 экспресс-выпуск |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Исключительные ситуации | Nevesta_Sira | Общие вопросы Delphi | 4 | 08.01.2011 14:25 |
Исключительные ситуации | BulbaZavr | Общие вопросы C/C++ | 3 | 29.12.2008 23:05 |
Исключительные ситуации | FIIR | БД в Delphi | 5 | 19.06.2008 16:30 |
Исключительные ситуации | FIIR | Помощь студентам | 1 | 19.06.2008 13:50 |
Исключительные ситуации | Mickle | Общие вопросы Delphi | 6 | 07.10.2007 21:03 |