Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблоны,исключительные ситуации 
:(
    Опции темы
Ksenija
Дата 25.1.2011, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 экспресс-выпуск
PM MAIL   Вверх
borisbn
Дата 25.1.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



вот здесь
Цитата(Ksenija @  25.1.2011,  14:45 Найти цитируемый пост)
queue[Size] = add;Size++;

добавляется в конец очереди

вот здесь
Цитата(Ksenija @  25.1.2011,  14:45 Найти цитируемый пост)

extract = queue[0];
for(int i=0; i<Size; i++)
{
  queue[i] = queue [i+1];
}

достаётся из начала очереди.
тебе же надо и добавлять и забирать из одного места. для простоты можно добавлять/забирать в/из конца

P.S. После вставки кода выдели его и нажми кнопку Код над полем ввода текста сообщения (правая нижняя). получится так
Код

for ( int i = 0; i < N; i++ ) {
    do_something();
}

а не так
for ( int i = 0; i < N; i++ ) {
    do_something();
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.