Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2011, 14:26   #1
Ksenija
Новичок
Джуниор
 
Регистрация: 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 экспресс-выпуск
Ksenija вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключительные ситуации 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