Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17

Нужно разобраться в программе, Не могу скомпилировать

27.01.2016, 22:06. Показов 1762. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скажу честно - заказал программу, для сдачи в вузе. Теперь не могу в ней разобраться.
Как её скомпилировать? В чём ошибка?
Вот задание:
Вот код который мне написали:
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
#include <iostream>
#include <queue>
#include <math.h>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include "stdafx.h"
using namespace std;
 
//Возвращает случайное значение от 0 до 1, распределено равномерно
double rnd()
{
    return ((double)rand()) / RAND_MAX;
}
//Возвращает случайное значение с экспоненциальным распределением и заданным матожиданием
double rnd_exp(double t)
{
    return (-t) * log(1 - rnd());
}
 
//Возвращает индекс самой короткой очереди
int min_q_ind(vector<priority_queue<double, vector<double>, greater<double>>> & q)
{
    if (q[0].size() <= q[1].size() && q[0].size() <= q[2].size())
        return 0;
    if (q[1].size() <= q[0].size() && q[1].size() <= q[2].size())
        return 1;
    return 2;
}
 
//Возвращает индекс канала, который освободится быстрее всех
int min_channel(double * ch)
{
    if (ch[0] <= ch[1] && ch[0] <= ch[2]) return 0;
    if (ch[1] <= ch[0] && ch[1] <= ch[2]) return 1;
    return 2;
}
 
int main()
{
    //Это для нормального вывода статистики на русском
    setlocale(LC_ALL, "Russian");
    //Общее время работы
    double T = 8 * 60 * 60;
    //Матожидания времени работы каналов
    int mas[3] = { 15, 25, 25 };
    //Очереди деталей
    vector<priority_queue<double, vector<double>, greater<double>>> queues(3);
    double channels[3] = { 0.0, 0.0, 0.0 };
 
    //Статистика
    vector<double> queue_times[3] = { vector<double>(), vector<double>(), vector<double>() };
    int queue_counts[3] = { 0, 0, 0 };
    int op_counts[3] = { 0, 0, 0 };
    double stoptimes = 0;
    double operates[3] = { 0.0, 0.0, 0.0 };
    int det_count = 0;
 
    //Времена поступления деталей в систему
    priority_queue<double, vector<double>, greater<double>> times;
    double t = rnd_exp(60.0 / 6);
    while (t < T)
    {
        times.push(t);
        t += rnd_exp(60.0 / 6);
    }
 
    bool operate = true;
    bool has_det = true;
    t = 0;
    det_count = times.size();
    while (times.size() > 0 && has_det)
    {
        double t_d = times.top();
        //Время прихода следующей детали к каналам:
        double t1;
        if (operate)
        {
            times.pop();
            t1 = max(t, t_d) + 2 + rnd() * 2;
        }
        else
        {
            t1 = t;
        }
        //Обрабатываются очереди
        for (int i = 0; i < 3; ++i)
        {
            while (queues[i].size() > 0 && channels[i] <= t1)
            {
                double w = rnd_exp(mas[i]);
                queue_times[i].push_back(max(queues[i].top(), channels[i]) - queues[i].top());
                channels[i] = max(queues[i].top(), channels[i]) + w;
                operates[i] += w;
                ++op_counts[i];
                queues[i].pop();
            }
        }
        //Проверка возможности пройти напрямую
        int k = min_channel(channels);
        double t2 = channels[k];
        if (t2 > t1)
        {
            //Не получится - попытка стать в очередь
            k = min_q_ind(queues);
            if (queues[k].size() < 5)
            {
                queues[k].push(t1);
                ++queue_counts[k];
                operate = true;
            }
            else
            {
                //В очереди нет места - остановка системы
                stoptimes += t2 - t1;
                t = t2;
                operate = false;
            }
        }
        else
        {
            //Очереди нет
            operate = true;
            double w = rnd_exp(mas[k]);
            channels[k] = t1 + w;
            operates[k] += w;
            ++op_counts[k];
        }
 
        int sum = 0;
        for (int i = 0; i < 3; ++i)
            sum += op_counts[i];
        has_det = (det_count > sum);
    }
    t = max(channels[0], max(channels[1], channels[2]));
 
    //Вывод статистик
    cout << "Закончена обработка последней детали в: " << t / 60 / 60 << " часов." << endl;
    cout << "Всего обработано деталей: " << det_count << endl;
    cout << "Общее время ожидания робота: " << stoptimes << endl;
    cout << "Время занятости каждого канала, %\n" << operates[0] / t * 100 << "% " << operates[1] / t * 100 << "% " << operates[2] / t * 100 << '%' << endl;
    double q_sum[3] = { 0.0, 0.0, 0.0 };
    for (int i = 0; i < 3; ++i)
    {
        for (vector<double>::iterator it = queue_times[i].begin(); it != queue_times[i].end(); ++it)
        {
            q_sum[i] += *it;
        }
    }
    cout << "Общее количество деталей, побывавших в очередях: \n" << queue_counts[0] << " " << queue_counts[1] << " " << queue_counts[2] << endl;
    cout << "Среднее время стояния в очереди, без учета прошедших напрямую деталей:\n" << q_sum[0] / queue_counts[0] << " " << q_sum[1] / queue_counts[1] << " " << q_sum[2] / queue_counts[2] << endl;
    cout << "Среднее время стояния в очереди, с учетом прошедших напрямую деталей:\n" << q_sum[0] / op_counts[0] << " " << q_sum[1] / op_counts[1] << " " << q_sum[2] / op_counts[2] << endl;
    cout << "Процент деталей, побывавший в очередях к каналам:\n" << queue_counts[0] * 100.0 / det_count << "% " << queue_counts[1] * 100.0 / det_count << "% " << queue_counts[2] * 100.0 / det_count << '%' << endl;
 
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2016, 22:06
Ответы с готовыми решениями:

Не могу разобраться в программе
помогите пожалуйста разобраться во всем этом. точнее в процедуре Sort. как она работает

Не могу разобраться в программе
Задача прог-мы заключается в следующем: пользователь вводит фио студента, выбирает группу(или вводит), вводит id студента , после этого...

Не могу разобраться в программе
var xn,xk,dx,b,c:real; k:integer; function f(x:real):real; begin f:=sin(x); end; begin writeln('Введите Xn,Xk,Dx'); ...

21
68 / 68 / 11
Регистрация: 28.12.2012
Сообщений: 471
27.01.2016, 22:18
Какая среда разработки?
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
27.01.2016, 22:23  [ТС]
Я думал что Visual C++, но не компилируется в ней.
0
68 / 68 / 11
Регистрация: 28.12.2012
Сообщений: 471
27.01.2016, 22:25
Ошибки какие выдает?
0
68 / 68 / 11
Регистрация: 28.12.2012
Сообщений: 471
27.01.2016, 22:35
Оформите вопрос надлежащим образом, потом кто-нибудь ответит. Я по неизвестным ссылкам, переходить не собираюсь
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
27.01.2016, 22:39  [ТС]
Вот загрузил сюда:
0
68 / 68 / 11
Регистрация: 28.12.2012
Сообщений: 471
27.01.2016, 22:49
stdafx.h присутствует в проекте? Нужно ошибки показать те, что выше, а не предупреждения.

Добавлено через 2 минуты
Этот файл нужно подключать первым.
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
27.01.2016, 22:54  [ТС]
Когда пытаюсь подключить stdafx.h то выдаёт вот эти ошибки:
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
27.01.2016, 22:59  [ТС]
подключаю первым:
C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
#include <iostream>
#include <queue>
#include <math.h>
#include <algorithm>
#include <vector>
#include <cstdlib>
using namespace std;
Мне писали без "stdafx.h".
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
27.01.2016, 23:38
Цитата Сообщение от Drage1994 Посмотреть сообщение
Мне писали без "stdafx.h".
Так убери его. Создай пустой проект: Общие - Пустой.

Добавлено через 2 минуты
В студии (без #include "stdafx.h") этот код компилируется без ошибок.
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
28.01.2016, 01:49  [ТС]
так и сделал, не компилируется. странно. вроде всё просто должно быть
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
28.01.2016, 01:57
Цитата Сообщение от Drage1994 Посмотреть сообщение
не компилируется
Пишет что?
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
28.01.2016, 02:05  [ТС]
вот пишет:
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
28.01.2016, 02:10  [ТС]
1>------ Сборка начата: проект: Проект2, Конфигурация: Debug Win32 ------
1> Исходный код.cpp
1>c:\users\...\проект2\проект2\исходный код.cpp(22): error C2065: greater: необъявленный идентификатор
1>c:\users\...\проект2\проект2\исходный код.cpp(22): error C2062: тип "double" не требуется
1>c:\users\...\проект2\проект2\исходный код.cpp(22): error C2143: синтаксическая ошибка: отсутствие ")" перед ">"
1>c:\users\...\проект2\проект2\исходный код.cpp(22): error C2059: синтаксическая ошибка: >
1>c:\users\...\проект2\проект2\исходный код.cpp(22): error C2059: синтаксическая ошибка: )
1>c:\users\...\проект2\проект2\исходный код.cpp(23): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\...\проект2\проект2\исходный код.cpp(23): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Добавлено через 2 минуты
все ошибки в этих строках:
C++
1
2
int min_q_ind(vector<priority_queue<double, vector<double>, greater<double>>> & q)
{
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
28.01.2016, 02:12
Покажи, что у тебя в 22-й строке.
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
28.01.2016, 02:13  [ТС]
Это оно и есть
C++
1
int min_q_ind(vector<priority_queue<double, vector<double>, greater<double>>> & q)
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
28.01.2016, 02:15
Студия какая?
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
28.01.2016, 02:16  [ТС]
Express 2013
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
28.01.2016, 02:25
Лучший ответ Сообщение было отмечено Drage1994 как решение

Решение

Вот это добавь:
C++
1
#include <functional>
Добавлено через 1 минуту
В 10-й и без этого компилируется, а в 13-й, наверное, включения как-то по другому сделаны.
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 17
28.01.2016, 02:31  [ТС]
Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.01.2016, 02:31
Помогаю со студенческими работами здесь

не могу разобраться в программе
Здравствуйте! Программа сортирует методом пузырька числа с плавающей точкой,которые находятся в файле Input.txt Помогите пожалуйста...

Нужно разобраться в программе
В вузе задали задание, разобраться в непонятном коде. Не знаю где препод нашел этот код, но точно не в адекватных местах. Что делает...

Нужно разобраться в программе
let sortedRows = Array.from(table.rows) .slice(1) .sort((rowA, rowB) =&gt; rowA.cells.innerHTML &gt; rowB.cells.innerHTML ? 1 : -1); ...

Не могу разобраться с ошибкой в программе
Задача: Секретное агентство «Super-Secret-no» решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала...

Массив. Не могу разобраться в программе.
Не могу разобраться в программе. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int m ,*p=m,i; for(i=9;i&gt;0;i--) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru