|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Очереди в c++ |
|
C/C++ - Очереди в c++
|
Новый участник Сообщения: 1 |
Помогите пожалуйста!
Почему числа не записывает в файл??? Вот код: DS.h #include <iostream> #include <fstream> template < typename G > class QueueList { class ITEM { public: G data; ITEM *next, *prev; ITEM( G &ref ) : next( NULL ), prev( NULL ), data( ref ) {} ~ITEM() {} }; ITEM *head,*tail; public: QueueList() : head( NULL ), tail( NULL ){} ~QueueList() { clear(); } bool empty() { //функція повертає істину, якщо черга немає жодного елемента return head == NULL; } void PushTail( G &ref ) { //функція додає новеий елемент після останнього if( empty() ) head = tail = new ITEM( ref ); else { ITEM*P=new ITEM( ref ); tail -> next = P; P -> prev = tail; tail = P; } } void PushHead( G &ref ) { //функція додає новий елемент перед першим if( empty() ) { head = new ITEM( ref ); tail=head; } else { ITEM*P = new ITEM( ref ); head -> prev = P; P -> next = head; head=P; } } void PopHead() { //функція вилучає перший елемент head = head -> next; } void PopTail() { //функція вилучає останній елемент tail = tail -> prev; } G& GetH() { //функція повертає посилання на іформаційне поле першого елементу return head -> data; } G& GetT() { //функція повертає посилання на іформаційне поле останнього елементу return tail -> data; } void clear() { //неявний деструктор класу while( head ) { ITEM *p = head; head = head->next; delete p; } tail = head; } void openf() { //функція читання черги з файлу using namespace std; fstream in( "input.txt", ios_base :: in | ios_base :: binary ); if( !in.is_open() ) throw "Cann't open file : input.bin"; if( in.eof() ) throw "File if empty"; char ch; int buf; while( !in.eof() ) { in >> buf; in >> ch; PushTail( buf ); } in.close(); } void savef() { //функція запису черги в файл using namespace std; fstream out( "output.txt", ios_base :: in | ios_base :: binary ); if( !out.is_open() ) throw "Cann't create file"; ITEM *p = head; do { out << p -> data; if(p -> next == NULL) out << '^'; p = p -> next; } while( p!= tail ); out.close(); } }; // kurs.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include "DS.h" #define QL QueueList int _tmain(int argc, _TCHAR* argv[]) { using namespace std; cout << "\n ***** HELLO! *****\n"; QL <int> list; for(; ![]() { cout << "\n ***** What to do? *****\n" << "\n\n 1) PUSH element to HEAD of queue;" << "\n\n 2) PUSH element to TAIL of queue;" << "\n\n 3) POP element from HEAD of queue;" << "\n\n 4) POP element from TAIL of queue;" << "\n\n 5) Set HEAD;" << "\n\n 6) Set TAIL;" << "\n\n 7) Save queue;" << "\n\n 8) Open queue;" << "\n\n 9) Exit;\n" << "\n---->"; int ch; cin >> ch; if( ch > 9 || ch < 1 ) { cout << "Wrong number" << "---->"; cin >> ch; } if( ch == 1 ) { cout << "\n ****ENTER DATA*****\n" << "---->"; int buf; cin >> buf; list.PushHead( buf ); } if( ch == 2 ) { cout << "\n ****ENTER DATA*****\n" << "---->"; int buf; cin >> buf; list.PushTail( buf ); } if( ch == 3 ) { list.PopHead(); cout << "DONED*****\n"; } if( ch == 4 ) { list.PopTail(); cout << "\nDONED*****\n"; } if( ch == 5 ) { cout << "\n ****ENTER DATA*****\n" << "---->"; cin >> list.GetH(); } if( ch == 6 ) { cout << "\n ****ENTER DATA*****\n" << "---->"; cin >> list.GetT(); } if ( ch == 7) { list.savef(); cout << " \n Queue was saved in file \\output.txt \n "; } if ( ch == 8 ) { list.openf(); cout << "\n File was opend succesfuly"; } } return 0; } |
|
Отправлено: 21:06, 26-04-2012 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать |
Отправлено: 02:45, 28-04-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Система электронной очереди | Delirium | Прочее железо | 3 | 24-04-2012 00:51 | |
V. 5.5/2000/2003 - письмо висит в очереди | Сет | Microsoft Exchange Server | 3 | 14-11-2008 10:36 | |
WINS/Browse - Вылетают по очереди! | zalg | Сетевые технологии | 3 | 20-02-2008 17:40 | |
Мониторинг очереди печати. | kallioma | Microsoft Windows NT/2000/2003 | 2 | 02-04-2007 14:39 | |
вылет процессов по очереди | lightangel | Microsoft Windows 95/98/Me (архив) | 14 | 08-12-2003 11:55 |
|