![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Ksenija |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 25.1.2011 Репутация: нет Всего: нет |
я в программировании чайник,нов университете требуют... не могу написать программу, задание следующее:
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 экспресс-выпуск |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
вот здесь
добавляется в конец очереди вот здесь
достаётся из начала очереди. тебе же надо и добавлять и забирать из одного места. для простоты можно добавлять/забирать в/из конца P.S. После вставки кода выдели его и нажми кнопку Код над полем ввода текста сообщения (правая нижняя). получится так
а не так for ( int i = 0; i < N; i++ ) { do_something(); } -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |