|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.10.2010, 20:59 | #1 |
Регистрация: 02.06.2010
Сообщений: 6
|
Задача по с
Перед открытием двух железнодорожных касс сформировались 2 очереди пассажиров, причем некоторые из них находятся сразу в обеих очередях. Для каждого пассажира известны его места в очередях и необходимое время обслуживания. Если у какого-либо пассажира очереди подходят одновременно, то он обслуживается в первой кассе. Промоделировать работу касс, выдавая последовательно информацию об обслуживании пассажиров.
Помогите разобраться ... несколько раз пытался написать но толкового ничего не получилось))) |
30.10.2010, 21:28 | #2 |
Регистрация: 02.06.2010
Сообщений: 6
|
#include <iostream>
#include <windows> using namespace std; class Node { public: int number; Node* prev; // Добавленное раньше Node* next; // Добавленное позже }; void printsk(const char*); // Прототип функции русского текста void About() { printsk ("Автор: ymanety\n\n"); } void main() { Node* head = NULL; //указатель на голову очереди Node* tail = NULL; //указатель на хвост очереди Node* ptrLast = NULL; short action = -1; while(1) { About(); printsk ("1. Добавить элемент\n"); printsk ("2. Просмотр очереди\n"); printsk ("3. Удалить элемент\n"); printsk ("4. Поиск элемента\n"); printsk ("0. Выход\n\n"); printsk ("Ваш выбор: "); cin >> action; // Выход if (action == 0) { system("CLS"); break; } //Добавить элемент if (action == 1) { system("CLS"); int numb = -1; printsk ("Введите число: "); cin >> numb; Node* pNewNode = new Node; // Тут будет новый узел pNewNode->number = numb; pNewNode->next = NULL; // Следующий узел за созданным. Т.к. создаваемый узел // добавляется в конец, то сейчас там NULL tail = pNewNode; if (head == NULL) { // Типа если очередь пустая head = pNewNode; ptrLast = pNewNode; pNewNode->prev = NULL; system("CLS"); continue; } pNewNode->prev = ptrLast; ptrLast->next = pNewNode; ptrLast = pNewNode; system("CLS"); continue; } //Просмотр очереди if (action == 2) { system("CLS"); Node* ptr = NULL; if (head == NULL) { printsk ("\tОчередь пуста.\n\n"); system("PAUSE"); system("CLS"); continue; } printsk("Очередь:\n\n"); ptr = tail; while (1) { cout << ptr->number << " "; if (ptr->prev == 0) break; ptr = ptr->prev; } cout<<"\n\n"; system("PAUSE"); system("CLS"); continue; } //Удалить элемент if (action == 3) { system("CLS"); Node* ptrDelete = NULL; if (head == NULL) { printsk ("\tОчередь пуста\n\n"); system("PAUSE"); system("CLS"); continue; } if (head->next == NULL) { head = NULL; tail = NULL; delete tail; continue; } ptrDelete = head; head = ptrDelete->next; head->prev = NULL; delete ptrDelete; continue; } // Поиск элемента if (action == 4) { system("CLS"); Node* ptr = NULL; int key = -1; if (head == NULL) { printsk ("\tСписок пуст\n\n"); system("PAUSE"); system("CLS"); continue; } printsk ("Введите элемент для поиска: "); cin >> key; ptr = head; while (1) { if (key == ptr->number) { printsk ("\n\tЭлемент найден\n"); break; } if (ptr->next == NULL) { printsk ("\n\tЭлемент не найден\n"); break; } ptr = ptr->next; } system("PAUSE"); system("CLS"); continue; } void printsk (const char* rus) { char word[100]; CharToOem(rus, word); cout << word; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача по С++ | dosinho | Помощь студентам | 1 | 30.11.2008 15:27 |