Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "stdlib.h"
- #include <conio.h>
- using namespace std;
- // описание шаблона класса
- template <typename Qtype> class queue {
- Qtype* q;
- int sloc, rloc;
- int length;
- public: // описание методов класса
- queue(int size);
- ~queue() { delete[] q; };
- void qstore(Qtype i);
- Qtype qretrieve();
- void print();
- void init(int size);
- void delete_queue();
- };
- template <typename Qtype> queue<Qtype>::queue(int size) // описание конструктора
- {
- q = 0;
- init(size);// вызов метода создания очереди
- }
- template <typename Qtype> void queue<Qtype>::qstore(Qtype i) // описание метода добавления элемента в очередь
- {
- // проверка на создание очереди
- if (q == 0) {
- cout << "err-> inicializacia ocheredi\n";
- return;
- }
- //проверка на заполнение очереди
- if (sloc == length) {
- cout << "ochered pusta \n";
- return;
- }
- q[sloc] = i; //запонить элемент очереди
- sloc++; // увеличить указатель на элемент очереди
- }
- // описание метода удаления элемента из очереди
- template <class Qtype> Qtype queue<Qtype>::qretrieve()
- {
- // проверка на создание очереди
- if (q == 0) {
- cout << "err-> inicializacia ocheredi \n";
- return 0;
- }
- // проверка пустой очереди
- if (sloc == rloc) {
- cout << "ochered pusta \n";
- return 0;
- }
- rloc++;//установить указатель на следующий элемент
- return q[rloc - 1];// возвратить (удалить) элемент из очереди
- }
- // вывести на экран очередь
- template <typename Qtype> void queue<Qtype>::print()
- {
- // проверка пустой очереди
- if (sloc == rloc) {
- cout << "ocehered pusta \n";
- return;
- }
- cout << "ochered=";
- // цикл вывода на экран очереди
- for (int i = rloc; i < sloc; i++)
- {
- cout << q[i] << " ";
- }
- cout << "\n";
- }
- // инициализация очереди
- template <typename Qtype> void queue<Qtype>::init(int size)
- {
- if (q != 0) {
- delete[] q; //освободить очередь
- q = 0;
- }
- q = new Qtype[size]; //создать очередь
- if (!q) { // проверка на создание очереди
- cout << "ochered ne sozdana\n";
- exit(1);
- }
- length = size; // установка параметров очереди
- sloc = rloc = 0;
- }
- // удалить очередь
- template <typename Qtype> void queue<Qtype>::delete_queue()
- {
- if (q != 0) {
- delete[] q;//освободить очередь
- q = 0;
- }
- //cout<<" udalenie ocheredi \n";
- length = 0; // обновить параметры очереди
- sloc = rloc = 0;
- }
- int main() //главная функция
- {
- int n;
- double El;
- queue<double>* a = 0; /* Double! */
- int ar = 1;
- while (ar) // цикл вывода меню и его обработка
- {
- cout << "1.sozdat ochered \n";
- cout << "2.inicializacia ocheredi \n";
- cout << "3.dobavlenie el v ochered \n";
- cout << "4.udalenie elementa \n";
- cout << "5.vivesti na ekran \n";
- cout << "6.udalenie ocheredi \n";
- cout << "7.Vihod \n";
- char k = cin.get();
- switch (k) // обработка нажатия клавиши
- {
- case '1':
- if (a != 0) //проверка на создание класса очереди
- {
- cout << "err -> unichtogina ochered";
- cin.get();
- break;
- }
- cout << "kol-vo elementov=";
- n = 0; cin >> n; cout << "\n"; // ввести количество элементов в очереди
- if (n > 0)
- a = new queue<double>(n);// создание очереди /* Double! */
- system("pause");
- break;
- case '2': //компилятор ругается на это место
- if (a == 0)//проверка на создание класса очереди
- {
- cout << "err -> ochered ne sozdana \n";
- cin.get();
- break;
- }
- cout << "count element=";
- n = 0; cin >> n; cout << "\n";// ввести количество элементов в очереди
- if (n > 0)
- a->init(n);// создание очереди
- cout << "inicializacia ocheredi \n";
- cin.get();
- break;
- case '3':
- if (a == 0)//проверка на создание класса очереди
- {
- cout << "err -> ochered ne sozdana \n";
- cin.get();
- break;
- }
- cout << "element=";
- cin >> El; cout << "\n";//ввести элемент
- a->qstore(El); //добавить элемент /* Double! */
- a->print();// вывести очередь
- cin.get();
- break;
- case '4':
- if (a == 0)//проверка на создание класса очереди
- {
- cout << "err -> ochered ne sozdana \n";
- cin.get();
- break;
- }
- cout << "udalenie elementa=";
- El = a->qretrieve();// взять первый элемент очереди /* Double! */
- if (El >= 0)
- cout << n;
- cout << "\n"; //вывести элемент на экран
- a->print();// вывести очередь
- cin.get();
- break;
- case '5':
- if (a == 0)//проверка на создание класса очереди
- {
- cout << "err -> ochered ne sozdana \n";
- cin.get();
- break;
- }
- a->print();// вывести очередь
- cin.get();
- break;
- case '6':
- if (a == 0)//проверка на создание класса очереди
- {
- cout << "err -> ochered ne sozdana \n";
- cin.get();
- break;
- }
- a->delete_queue();// удалить очередь
- cout << "udalenie ocheredi \n";
- cin.get();
- break;
- case '7':
- ar = 0;// выход из цикла
- break;
- }
- }
- return 0;//завершение программы
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement