DZ4
/
project5.cpp
53 строки · 2.1 Кб
1//Разработать приложение, имитирующее очередь печати
2//принтера.Должны быть клиенты, посылающие запросы
3//на принтер, у каждого из которых есть свой приоритет.
4//Каждый новый клиент попадает в очередь в зависимости
5//от своего приоритета.Необходимо сохранять статистику печати(пользователь, время) в отдельной очереди.
6//Предусмотреть вывод статистики на экран.
7#include <iostream>
8#include <queue>
9#include <ctime>
10#include<string>
11using namespace std;
12// Структура для представления клиента
13struct Client {
14string name;
15int priority;
16};
17
18// Функция для сравнения клиентов по приоритету
19struct ComparePriority {
20bool operator() (const Client& c1, const Client& c2) {
21return c1.priority > c2.priority;
22}
23};
24
25int main() {
26priority_queue<Client, vector<Client>, ComparePriority> printQueue;
27queue<pair<string, time_t>> printStats;
28
29// Добавление клиентов в очередь печати
30printQueue.push({ "Alice", 2 });
31printQueue.push({ "Bob", 1 });
32printQueue.push({ "Charlie", 3 });
33
34// Симуляция печати
35while (!printQueue.empty()) {
36Client client = printQueue.top();
37printQueue.pop();
38cout << "Printing document for " << client.name << " (Priority: " << client.priority << ")" << endl;
39
40// Запись статистики печати
41printStats.push({ client.name, time(NULL) });
42}
43
44// Вывод статистики печати
45cout << "Print statistics:" << endl;
46while (!printStats.empty()) {
47pair<string, time_t> printRecord = printStats.front();
48printStats.pop();
49cout << "User: " << printRecord.first << ", Time: " << asctime(localtime(&printRecord.second));
50}
51
52return 0;
53}