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

СМО - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ханойские башни: демонстрация решения http://www.cyberforum.ru/cpp-beginners/thread365168.html
Добрый день! Требуется решить такую задачу Разработать программу, реализующую демонстрацию хода решения пользователем-человеком головоломки "Ханойские башни". При вызове программы на выполнение число дисков N должно задаваться как аргумент в командной строке. Ввод пользователя должен иметь вид "MK", где M (и K) - цифра, обозначающая стержень с которого (на который) переносится диск. ...
C++ Оператор = и наследование Добрый день, вот есть код: class Copier { public: const Copier& operator = (const Copier&) { qDebug() << "In const Copier& Operator = "; http://www.cyberforum.ru/cpp-beginners/thread365164.html
Создание класса C++
Уважаемые программисты...помогите с созданием класса в С++. надо перегрузить основные функции класса...темы: комплексное число, дата, время, стек, массив,строка,многочлен, матрица,очередь,длинное целое, геометрическая фигура... помогите любой инфой и примерами:)заранее благодарен
В строке удалить слова наибольшей длины... C++
Доброго времени суток всем. Учусь у универе и долго болел. Сейчас дали пару задач, вобще не понимаю как решать) Надеюсь на вашу помощь. Вот задача: В строке удалить слова наибольшей длины. Оставшиеся слова записать через пробел. Заранее благодарен.
C++ Что означает команда exit(1) ? http://www.cyberforum.ru/cpp-beginners/thread365154.html
Добрый день. Привожу кусок кода из учебника: Функция добавления элемента в очередь: void Add(int Last, int number) { if (Last==maxqueue) exit(1); //Очередь полна Queue=number; //Добавляет элемент number в очередь Last++; //Сдвигает указатель Last на один элемент вправо } Меня интересует строчка №3. Что здесь означает команда exit(1) ? И вообще что она означает? Мне просто...
C++ Перевод числа в другие системы int x=0; int bin=0; int in=0; cin >> in; switch (in){ case 1: cout << "Введите число\n"; cin >> bin; cout << endl; подробнее

Показать сообщение отдельно
Ники
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 50
12.10.2011, 18:02  [ТС]     СМО
Да просто задали такое задание: написать одноканальную абстрактную СМО с ожиданием, где нужно использовать этот стек. А я даже и не знаю, с чего начать

Добавлено через 3 часа 22 минуты
Вот нашел исходник, есть ли тут этот самый стек или нет?
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
#include <iostream>
#include <ctime>
#include <list>
//---------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------
enum RequestType {firstType = 1, secType = 2}; // Тип заявки.
//---------------------------------------------------------------------------
// Заявка: тип.
struct Request {
    RequestType ReqType;
};
//---------------------------------------------------------------------------
const double BegInterval            = 0; // Начало каждого из интервалов генерации и обработки.
const double EndGenerateFReq        = 5; // Максимальное время генерации заявки 1-го типа.
const double UseFReq                = 4; // Максимальное время обработки заявки 1-го типа.
const double UseSReq                = 4; // Максимальное время обработки заявки 2-го типа.
const int    MaxSReqPos             = 4; // Не далее этого элемента заявка второго типа вернётся в очередь.
//---------------------------------------------------------------------------
// RandTime() генерирует случайное число.
double RandTime() {
    double Val = (rand() * 1.0) / RAND_MAX;
    return Val;
}
//---------------------------------------------------------------------------
// MinTime возвращается из 2-х значений.
double MinTime(double T1, double T2) {
    return ((T1 > T2) ? T2 : T1);
}
//---------------------------------------------------------------------------
// GenAddFReq() генерирует время прихода следующей заявки 1-го типа.
double GenAddFReq() {
    double Val = RandTime();
    double Time = (EndGenerateFReq - BegInterval) * Val + BegInterval;
    return Time;
}
//---------------------------------------------------------------------------
// GenUseFReq() генерирует время обработки следующей заявки 1-го типа.
double GenUseFReq() {
    double Val = RandTime();
    double Time = (UseFReq - BegInterval) * Val + BegInterval;
    return Time;
}
//---------------------------------------------------------------------------
// GenUseSReq() генерирует время обработки заявки 2-го типа.
double GenUseSReq() {
    double Val = RandTime();
    double Time = (UseSReq - BegInterval) * Val + BegInterval;
    return Time;
}
//---------------------------------------------------------------------------
int main() {
    srand(static_cast<unsigned int>(time(NULL)));
    list<RequestType> RequestQueue;
    RequestType STypeReq = secType;
    RequestType FTypeReq = firstType;
    RequestQueue.push_back(STypeReq);
    unsigned int CountFReqs       =   0; // Количество обработанных заявок 1-го типа для вывода статистики.
    unsigned int CountUseFReqs    =   0; // Количество обработанных заявок 1-го типа.
    unsigned int Enter2QueueFReqs =   0; // Количество заявок 1-го типа вошедших в систему.
    double Time                   = 0.0; // Время, минимум между поступлением новой заявки и обработкой текущей.
    double TimeEnter              = 0.0; // Время прихода заявки.
    double TimeClearService       = 0.0; // Время обработки заявки (освобождения ОА)
    double NextEventTime          = 0.0; // Время следующего события.
    double TotalTime              = 0.0; // Общее время моделирования.
    list<RequestType>::iterator PredSReq   = RequestQueue.begin(); // Этот итератор указывает на заявку, 
                                                                   // перед которой надо вставить заявку 2го типа.
    list<RequestType>::iterator tmp        = RequestQueue.begin();
    unsigned long CountOfCalcs =   0; // Количество вычислений.
    double MiddleLenQueue      = 0.0; // Средняя длина после каждого вычисления.
    unsigned long countSecReqs =   0; // Количество заявок 2-го типа.
    unsigned long SumOfCalcs   =   0; // Сумма всех измерений.
    while(true) {
        if(1000 == CountUseFReqs) break;
        TimeEnter = GenAddFReq();
        if(2 == RequestQueue.front()) TimeClearService = GenUseSReq();
        else TimeClearService = GenUseFReq();
        Time = MinTime(TimeEnter, TimeClearService);
        //cout << "[Time]: " << Time << " | " << RequestQueue.front() << endl;
        if(Time == TimeEnter) {
            // Добавляем заявку первого типа.
            RequestQueue.push_back(FTypeReq);
            CountFReqs++;       // Увеличиваем счётчик заявок 1-го типа, для вывод статистики и выхода из цикла.
            Enter2QueueFReqs++; // Увеличиваем общее количество заявок кошедших в систему.
            TotalTime += Time;
            continue;
        }
        else {
            // Обрабатываем заявку.
            if(secType == RequestQueue.front()) {
                // Обрабатываем заявку 2-го типа.
                countSecReqs++;
                RequestQueue.pop_front();
                //TotalTime += Time;
                if(MaxSReqPos >= RequestQueue.size()) {
                    RequestQueue.push_back(STypeReq);
                    continue;
                }
                else {
                    PredSReq = RequestQueue.begin();
                    for(int i = 0; i != 4; i++) PredSReq++;
                    /*
                    PredSReq++;
                    PredSReq++;
                    PredSReq++;
                    PredSReq++;
                    */
                    RequestQueue.insert(PredSReq, STypeReq);
                    continue;
                }
            }
            else {
                // Обрабатываем заявку 1-го типа.
                TotalTime += Time;
                CountUseFReqs++;
                RequestQueue.pop_front();
                SumOfCalcs += static_cast<int>(RequestQueue.size());
                CountOfCalcs++;
                /*
                cout << "Now Queue: " << endl;
                tmp = RequestQueue.begin();
                for(; tmp != RequestQueue.end(); tmp++) cout << *tmp << " ";
                cout << endl;
                */
                if((0 == CountUseFReqs % 100) && (0 != CountUseFReqs)) {
                    MiddleLenQueue = (SumOfCalcs * 1.0) / CountOfCalcs;
                    cout << "----------" << endl;
                    cout << "[Count of requests]: " << CountUseFReqs << endl;
                    cout << "Now length of queue: " << static_cast<unsigned int>(RequestQueue.size()) << endl;
                    cout << "Now middle length of queue: " << MiddleLenQueue << endl;
                    cout << "[countSecReqs]: " << countSecReqs << endl;
                }
            }
        }
    }
    cout << "----------" << endl << "Total modeling time: " << TotalTime << endl;
    cout << "1st. type requests enter: " << Enter2QueueFReqs << endl;
    cout << "1st. type requests out: " << CountUseFReqs << endl;
    cout << "[countSecReqs]: " << countSecReqs << endl;
    int i;
    cin >> i;
    return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
 
Текущее время: 23:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru