K
Ksenija
я в программировании чайник,нов университете требуют... не могу написать программу, задание следующее:
1. Определить класс-шаблон с использованием динамического распределения
памяти согласно варианту и необходимые конструкторы и операции,
включая конструктор копий, операция присваивания и если указано
операцию индексации. При выходе за границу, переполнении и т.п.
вызвать исключительную ситуацию (определить собственные классы)
для информирования программы, вызвавшей метод.
2. Запрограммировать main c тестами
(создание объектов и выполнение действий с ним,
в т.ч. действие, приводящее к возникновению исключительной ситуации,
которую необходимо перехватить)
Задание:
9. класс стек элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление << и извлечение >> элемента
есть такая же написанная программа только не для стека,а для очереди, не могу её переделать... если у кого-то есть время, помогите пожалуйста, вот написанная программа для очереди:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
программируем в Microsoft Visual C++ ,2010 экспресс-выпуск
1. Определить класс-шаблон с использованием динамического распределения
памяти согласно варианту и необходимые конструкторы и операции,
включая конструктор копий, операция присваивания и если указано
операцию индексации. При выходе за границу, переполнении и т.п.
вызвать исключительную ситуацию (определить собственные классы)
для информирования программы, вызвавшей метод.
2. Запрограммировать main c тестами
(создание объектов и выполнение действий с ним,
в т.ч. действие, приводящее к возникновению исключительной ситуации,
которую необходимо перехватить)
Задание:
9. класс стек элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление << и извлечение >> элемента
есть такая же написанная программа только не для стека,а для очереди, не могу её переделать... если у кого-то есть время, помогите пожалуйста, вот написанная программа для очереди:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
C++:
#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;
}