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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2010, 21:43   #1
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
Радость Поддерживает ли wxDev-C++ шаблон queue?Есть пример.

Здравствуйте,помогите разобраться с примером.Компилятор говорит об отсутствии объявлении queue.
Подскажите,пожалуйста.
Код:
#include <cstdlib>
#include <queue>
#include <iostream>
#include <ctime>
const int MIN_PER_HR = 60;
bool newcustomer(double x);
using namespace std;
class Customer
{
private:
    long arrive;        // vremya prebitiya klienta
    int processtime;    // vremya ego obslujivania
public:
    Customer() { arrive = processtime = 0; }
    void set(long when);
    long when() const { return arrive; }
    int ptime() const { return processtime; }
};

typedef Customer Item;

int main(int argc, char *argv[])
{
   
// ustanovka parametrov
    std::srand(std::time(0));    //  random initializing of rand()

    cout << "Vvedite maximal'ny razmer ocheredi: ";
    int qs;
    cin >> qs;
    queue<int> line(qs);         // ochered ostanavlivaetsya pri kol-ve ludey qs  

    cout << "Vvedite kol-vo modeliruemih chasov: ";
    int hours;            
    cin >> hours;
    // modelirovanie budet zapuskat' odin zcikl v minutu
    long cyclelimit = MIN_PER_HR * hours; // kol-vo zciklov

    cout << "Vvedite srednee kol-vo klientov v 1 chas: ";
    double perhour;         //  srednee kol-vo poyavleny za 1 chas
    cin >> perhour;
    double min_per_cust;    //  vremya mejdu poyavleniyami
    min_per_cust = MIN_PER_HR / perhour;


    Item temp;              //  dannie novogo klienta
    long turnaways = 0;     //  ne propushen v ohered,iz-za otsutstvia mesta v ney
    long customers = 0;     //  prisoedenen k ocheredi
    long served = 0;        //  obslujen vo vremya modelirovania
    long sum_line = 0;      //  obshaya dlinna ocheredi
    int wait_time = 0;      //  vremya,do togo kak osvoboditsya bankomat
    long line_wait = 0;     //  obshee vremya v ocheredi

    
    // zapusk modelirovania
    for (int cycle = 0; cycle < cyclelimit; cycle++)
    {
        if (newcustomer(min_per_cust))   // est' li novy klient 
        {
            if (line.(int)size() == qs)           
                turnaways++;
            else
            {
                customers++;
                temp.set(cycle);        // zcikl = vremya prebitia
                line.push(temp);       // dobavit' v ochered 
            }
        }
        if (wait_time <= 0 && !line.empty())                
        {
            line.pop(temp);           // obslujit' sled klienta    
            wait_time = temp.ptime(); //  wait_time
            line_wait += cycle - temp.when();
            served++;
        }
        if (wait_time > 0)
            wait_time--;
        sum_line += (int)line.size();                             
    }

//rezultati
    if (customers > 0)
    {
        cout << "prinyato klientov: " << customers << endl;
        cout << " obslujeno klientov: " << served << endl;
        cout << "otpravleno klientov: " << turnaways << endl;
        cout << "sredny razmer ocheredi: ";
        cout.precision(2);
        cout.setf(ios_base::fixed, ios_base::floatfield);
        cout.setf(ios_base::showpoint);
        cout << (double) sum_line / cyclelimit << endl;
        cout << " srednee vremya ojidania: "
             << (double) line_wait / served << " minut\n";
    }
    else
        cout << "Klientov net!\n";
    cout << "Gotovo!\n";
    system("PAUSE");
    return EXIT_SUCCESS;
}

//  x = srednee vremya v minutah mejdu pokupatelyami 
//  vozvrashaet true,esli v etu minutu poyavilsya pokupatel
bool newcustomer(double x)
{
    return (std::rand() * x / RAND_MAX < 1); 
}

void Customer::set(long when)
{
    processtime = std::rand() % 3+ 1;
    arrive = when; 
}

Последний раз редактировалось Aleksandr_Yanov; 25.08.2010 в 21:57.
Aleksandr_Yanov вне форума Ответить с цитированием
Старый 25.08.2010, 22:02   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

А ошибку увидеть можно ? )
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 25.08.2010, 22:20   #3
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
По умолчанию

Да я в ринципе разобрался.
Поправь,если не так напишу.
Убрал скобки(думал что нужен аргумент с кол-вом)
тип поставил Item(aka Customer) Теперь уже запрос на ввод размера не нужен?

Код:
cout << "Vvedite maximal'ny razmer ocheredi: ";
    int qs;
    cin >> qs;
    queue<Item> line;         // ochered ostanavlivaetsya pri kol-ve ludey qs
Вот здесь убрал аргумент из pop
Код:
 line.pop();           // obslujit' sled klienta    
            wait_time = temp.ptime(); //  wait_time
Aleksandr_Yanov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть готовый пример.Создание функций friend Aleksandr_Yanov Общие вопросы C/C++ 10 17.07.2010 04:57
Тем кто ищет Microsoft Office Word, здесь есть шаблон, с макросами OMO Microsoft Office Word 4 22.01.2009 03:46
есть простой шаблон для JOOMLA NIKOMIRON WordPress и другие CMS 3 09.11.2008 21:34