Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2010, 20:59   #1
ymanety
 
Регистрация: 02.06.2010
Сообщений: 6
Печаль Задача по с

Перед открытием двух железнодорожных касс сформировались 2 очереди пассажиров, причем некоторые из них находятся сразу в обеих очередях. Для каждого пассажира известны его места в очередях и необходимое время обслуживания. Если у какого-либо пассажира очереди подходят одновременно, то он обслуживается в первой кассе. Промоделировать работу касс, выдавая последовательно информацию об обслуживании пассажиров.



Помогите разобраться ... несколько раз пытался написать но толкового ничего не получилось)))
ymanety вне форума Ответить с цитированием
Старый 30.10.2010, 21:28   #2
ymanety
 
Регистрация: 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;
}
ymanety вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по С++ dosinho Помощь студентам 1 30.11.2008 15:27