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

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

27.01.2016, 22:06. Показов 1703. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru