Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Angellord
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 5
01.06.2010, 15:19     Описать работу ателье #1
Уважаемые господа програмисты, просто зачыпаюсь, хоть и год учил с++ всёравно ноль.
Мне нужен код к очереди, а желательно всю прогу если можно.)))

Смысл в очереди в том, что у нас есть ателье, в нем есть мастер и клиенты
мастер принмает заказы в таком порядке :
сначало обычные впринципе до 20 заказов в день
если появляются срочные заказы их ставят в очередь 1, и тоже самое с очень срочными.
Но если срочных набирается 4 заказа, то мастер сделав 4 срочных делает 2 обычных заказа.

Вот такая очередь.
Очено прошу помогите, надо сегодня очень срочтно, если завтро не покажу, то выгонят из института...
Пожалуйста очень прошу
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
01.06.2010, 15:53     Описать работу ателье #2
Цитата Сообщение от Angellord Посмотреть сообщение
надо сегодня очень срочтно, если завтро не покажу, то выгонят из института...
При таком подходе только во фриланс. Тут помогают тем, кто сам что-то делает. Да и програмка у Вас не в пару десятков строчек получится...
Angellord
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 5
01.06.2010, 15:56  [ТС]     Описать работу ателье #3
Да то что у меня сделано, это лудше никому не показывать вообще))) там такое, да и ошибок 30+
Mr.X
Эксперт С++
 Аватар для Mr.X
2796 / 1572 / 246
Регистрация: 03.05.2010
Сообщений: 3,649
02.06.2010, 00:06     Описать работу ателье #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
}
Angellord
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 5
02.06.2010, 09:48  [ТС]     Описать работу ателье #5
Mr.X,
Огромнейшое тебе спасибо!!!!! выручил.....О_о
Я так рад, просто не описать!!!

Добавлено через 18 минут
И ещё если не сложно, туда надо добавить in.txt для автоматич ввода данных
и out.txt где будут все результаты......
я как понял всё надо в main но что-то неполучается((((
Yandex
Объявления
02.06.2010, 09:48     Описать работу ателье
Ответ Создать тему
Опции темы

Текущее время: 09:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru