Форум программистов, компьютерный форум CyberForum.ru

шаблон очереди - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
skanku
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 56
28.02.2012, 12:05     шаблон очереди #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
// очередь.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include "stdlib.h"
#include <conio.h>
 
 
using namespace std;
 
 // описание шаблона класса
 template <class 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 <class Qtype> queue<Qtype>::queue(int size)
 {
 q=0;
 init(size);// вызов метода создания очереди
 }
 // описание метода добавления элемента в очередь
 template <class 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 <class 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 <class 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 <class 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;
 queue<int> *a=0;
 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=getch();
 switch(k) // обработка нажатия клавиши
 {
 case '1': 
 if (a!=0) //проверка на создание класса очереди
 {
 cout<<"err -> unichtogina ochered";
 getch();;
 break;
 }
 cout<<"kol-vo elementov=";
 n=0;cin>>n; cout<<"\n"; // ввести количество элементов в очереди
 if (n>0)
 a=new queue<int>(n);// создание очереди
 system ("pause");
 break;
 case '2': //компилятор ругается на это место
 if (a==0)//проверка на создание класса очереди
 {
 cout<<"err -> ochered ne sozdana \n";
 getch();
 break;
 }
 cout<<"count element=";
 n=0;cin>>n; cout<<"\n";// ввести количество элементов в очереди
 if (n>0)
 a->init(n);// создание очереди
 cout<<"inicializacia ocheredi \n";
getch();
 break;
 case '3':
 if (a==0)//проверка на создание класса очереди
 {
 cout<<"err -> ochered ne sozdana \n";
 getch();
 break;
 }
 cout<<"element=";
 cin>>n; cout<<"\n";//ввести элемент
 a->qstore(n); //добавить элемент
 a->print();// вывести очередь
 getch();
 break;
 case '4':
 if (a==0)//проверка на создание класса очереди
 {
 cout<<"err -> ochered ne sozdana \n";
 getch();
 break;
 }
 cout<<"udalenie elementa=";
 n=a->qretrieve();// взять первый элемент очереди
 if (n>=0)
 cout<<n;
 cout<<"\n"; //вывести элемент на экран
 a->print();// вывести очередь
 getch();
 break;
 case '5':
 if (a==0)//проверка на создание класса очереди
 {
 cout<<"err -> ochered ne sozdana \n";
 getch();
 break;
 }
 a->print();// вывести очередь
getch();
 break;
 case '6':
 if (a==0)//проверка на создание класса очереди
 {
 cout<<"err -> ochered ne sozdana \n";
getch();
 break;
 }
 a->delete_queue();// удалить очередь
 cout<<"udalenie ocheredi \n";
getch();
 break;
 case '7':
 ar=0;// выход из цикла
 break;
 }
 }
 return 0;//завершение программы
 }
в очередь можно вводить только целые числа, помогите сделать так что бы были и дробные пожалуйста не могу чего то разобраться
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
28.02.2012, 12:51     шаблон очереди #2
C++
1
queue<double> *a=0;
skanku
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 56
28.02.2012, 12:57  [ТС]     шаблон очереди #3
спасибо, это я знаю но препод мне сказал что надо использовать переменную как Qtype
C++
1
template <class Qtype> class queue
отсюда, как именно так сделать не знаю
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
28.02.2012, 13:04     шаблон очереди #4
Вот я тебе и написал, как.
Yandex
Объявления
28.02.2012, 13:04     шаблон очереди
Ответ Создать тему
Опции темы

Текущее время: 00:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru