Форум программистов, компьютерный форум, киберфорум
Наши страницы

Описать работу ателье - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сдвиг элементов матрицы http://www.cyberforum.ru/cpp-beginners/thread139077.html
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима). Причем, n может быть больше количества элементов в строке или...
C++ Нужна анимация! Уважаемые программисты, не могли бы вы написать простенькую анимацию .... например: бьющиеся сердце.ПОЖАЛУЙСТАА!!!!!!! http://www.cyberforum.ru/cpp-beginners/thread139070.html
C++ Один зачёт остался на C++
1) Задан целочисленный массив. Подсчитать число различных значений в массиве. (тут используются какие-то методы класса set) 2) Удалить из исходной строки слова с нецифровыми символами....
C++ формула для расчета даты
в общем проблема в методе DateTime add_hour(int x)const нужно составить формулу чтобы при прибавлении часов правильно рассчитывался день месяц год от заданной даты, при этом нельзя использовать...
C++ Определить сумму элементов в тех строках, которые не содержат отрицательных элементов. http://www.cyberforum.ru/cpp-beginners/thread138990.html
Дана целочисленная квадратная матрица. Определить сумму элементов в тех строках, которые не содержат отрицательных элементов. Определить минимум среди сумм элементов диагоналей, параллельных...
C++ В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)количество положительных элементов массива; 2)сумму элементов массива, расположенных после последнего элемента равного нулю. 3)Преобразовать массив таким образом, чтобы сначала располагались все... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
02.06.2010, 00:06
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
//Смысл в очереди в том, что у нас есть ателье, в нем есть мастер и клиенты
//мастер принмает заказы в таком порядке :
//сначало обычные впринципе до 20 заказов в день
//если появляются срочные заказы их ставят в очередь 1, и тоже самое с очень срочными.
//Но если срочных набирается 4 заказа, то мастер сделав 4 срочных делает 2 обычных заказа.
//Вот такая очередь.
#include <queue>
#include <iostream>
 
enum T_prior_val
{
    EMPTY,
    OCHEN_SROCHN,
    SROCHN,
    OBYCHN
};
 
struct T_order
{
    int  ind_;
    int  prioritet_;
    T_order(int ind = 0, int prioritet = 0) : ind_(ind), prioritet_(prioritet)
    {}
};
 
typedef std::queue<T_order>  T_orders;
 
void input_orders
    (
        T_orders&  OCHEN_SROCHN_orders,
        T_orders&  SROCHN_orders,
        T_orders&  OBYCHN_orders
    )
{
    std::cout << "Введите приоритеты заказов:"       << std::endl
              << OCHEN_SROCHN << " - очень срочный;" << std::endl
              << SROCHN       << " - срочный;"       << std::endl
              << OBYCHN       << " - обычный;"       << std::endl
              << EMPTY        << " - конец ввода;"   << std::endl;
 
    int  cur_order_ind  = 1;
    int  cur_prioritet  = EMPTY;
    for(;;)
    {
        std::cout << "Заказ #" << cur_order_ind << ": ";
        std::cin >> cur_prioritet;
        switch(cur_prioritet)
        {
        case OCHEN_SROCHN:
            OCHEN_SROCHN_orders.push(T_order(cur_order_ind++, cur_prioritet));
            break;
        case SROCHN:
            SROCHN_orders.push(T_order(cur_order_ind++, cur_prioritet));
            break;
        case OBYCHN:
            OBYCHN_orders.push(T_order(cur_order_ind++, cur_prioritet));
            break;
        case EMPTY:
            return;
        default:
            return;           
        }//switch(cur_prioritet)
    }//for(;;)
}
 
void print_order(const T_order&  order)
{
    std::cout << "Заказ # " << order.ind_;
    switch(order.prioritet_)
    {
    case OCHEN_SROCHN:
        std::cout << " (очень срочный)";
        break;
    case SROCHN:
        std::cout << " (срочный)";
        break;
    case OBYCHN:
        std::cout << " (обычный)";
        break;
    case EMPTY:
        return;
    default:
        return;           
    }//switch(order.prioritet_)
    std::cout << std::endl;
}
 
void  orders_processing
    (
        T_orders&  OCHEN_SROCHN_orders,
        T_orders&  SROCHN_orders,
        T_orders&  OBYCHN_orders
    )
{
    std::cout << std::endl
              << "Очередность обработки заказов: " << std::endl;
    const int  MAX_SROCHN_PODRYAD  = 4;
    const int  MAX_OBYCHN_PODRYAD  = 2;
    const int  MAX_ORDER_COUNT    = 20;        
    int        order_count = 0;
    while(!OCHEN_SROCHN_orders.empty())
    {
        print_order(OCHEN_SROCHN_orders.front());
        OCHEN_SROCHN_orders.pop();
        if(++order_count == MAX_ORDER_COUNT) return;
    }
 
    while(!SROCHN_orders.empty() || !OBYCHN_orders.empty())
    {
        for(int srochn_order_count = 0; 
            srochn_order_count < MAX_SROCHN_PODRYAD; ++srochn_order_count)
        {
            if(!SROCHN_orders.empty())
            {
                print_order(SROCHN_orders.front());
                SROCHN_orders.pop();
                if(++order_count == MAX_ORDER_COUNT) return;           
            }
        }//for(int srochn_order_count = 0; srochn_order_count < MAX_SROCHN_PODRYAD;...
 
        for(int obychn_order_count = 0; 
            obychn_order_count < MAX_OBYCHN_PODRYAD; ++obychn_order_count)
        {
            if(!OBYCHN_orders.empty())
            {
                print_order(OBYCHN_orders.front());
                OBYCHN_orders.pop();
                if(++order_count == MAX_ORDER_COUNT) return;           
            }
        }//for(int obychn_order_count = 0; obychn_order_count < MAX_OBYCHN_PODRYAD;...
    }//while(!SROCHN_orders.empty())  
}
 
int main()
{
    std::locale::global(std::locale("rus"));
    T_orders  OCHEN_SROCHN_orders;
    T_orders  SROCHN_orders;
    T_orders  OBYCHN_orders;
 
    input_orders
        (
            OCHEN_SROCHN_orders,
            SROCHN_orders,
            OBYCHN_orders
        );
 
    orders_processing
        (
            OCHEN_SROCHN_orders,
            SROCHN_orders,
            OBYCHN_orders
        );
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.