Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/48: Рейтинг темы: голосов - 48, средняя оценка - 4.98
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Остановка выполнения программы на C++

16.11.2019, 21:49. Показов 10989. Ответов 62
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане! Столкнулся со следующей проблемой. Сейчас работаю над проектом (отправка кодов решений на C++ и их проверка на сервере с помощью PHP). Получается отправить программу из окна редактора и проверить ее с помощью тестов, а также замерить время выполнения каждого теста, но возникает проблема, замер времени происходит только после запуска и завершения программы, а мне нужно выйти из нее до ее завершения по исчечении 1-2 секунд (то есть, обработать ошибку TLE (Time Limit Exceeded)). Средставми PHP этого достигнуть не получается, так как необходим выход из программы до ее завершения. Поэтому, я решил делать остановку внутри кода на C++. Я никогда раньше не делал такого и нужно приблизительно следущее:

Код программы на C++:

C++
1
2
3
#include <iostream>
 
    using namespace std;
C++
1
Здесь функция остановки программы, если ее работа превышает 1-2 секунды
C++
1
2
3
4
int main() {
    Код программы...
return 0;
}
Нужна именно функция, а не просто замер времени внутри программы, так как планируется, что человек отправит свое решение, а я просто добавлю к коду эту функцию и если программа проработает больше указанного времени, то завершится ее работа.

Очень буду благодарен за ваш ответ, так как мы сами пока не знаем что делать.

Добавлено через 39 минут
Получилось сделать замер в начале и конце программы, но я не уверен, что это наилучший вариант. Вот, что получилось:

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
#include <iostream>
#include <climits>
#include <fstream>
#include <chrono> 
 
    using namespace std;
 
int main() {
    
    auto start = chrono::high_resolution_clock::now();
    
    ifstream in("input.txt");
    int n, m, x, y, max;
    in >> n >> m;
    int** a = new int*[n];
    for (int i = 0; i < n; i++) {
        a[i] = new int[m];
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            in >> a[i][j];
        }
    }
    for (int i = 1; i <= 400000000; i++); //Задержка выполнения ~ 0.6 сек.(на моем PC)
    max = INT_MIN;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (a[i][j] > max) {
                max = a[i][j];
                x = i;
                y = j;
            }
        }
    }
    cout << ++x << " " << ++y << "\n";
    for (int i = 0; i < n; i++) {
        delete[] a[i];
    }
    delete[] a;
    
    auto finish = std::chrono::high_resolution_clock::now();
    auto duration = chrono::duration_cast<chrono::microseconds>(finish - start).count();
    cout.precision(3);
    cout << "Elapsed time: " << fixed << (double)duration / 1000000.0 << "\n";
    
    return 0;
}
Может быть, у кого-то есть еще какие-нибудь идеи...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2019, 21:49
Ответы с готовыми решениями:

Остановка выполнения консольной программы без system("pause")
Всем привет. Ищу нормальный способ, который работает всегда и везде. Такой способ это нормальный? #include &lt;iostream&gt; #include...

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

Полная остановка программы
Здравствуйте, подскажите как в c++ можно плностью остановить и выключить программу, что-бы часть кода не выполнялось.

62
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
20.11.2019, 08:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fixer_84 Посмотреть сообщение
но ваш код с boost выдает ошибки. Вот скриншот.
На первой странице темы я в #11 сообщении указал что нужно делать.
Цитата Сообщение от DrOffset Посмотреть сообщение
нужно указать для линковки библиотеки boost_system, boost_thread и boost_chrono.
В C::B должно быть так:
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
23.11.2019, 18:44  [ТС]
DrOffset, здравствуйте! Программу удалось запустить благодаря вашему скриншоту. Спасибо большое!
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
07.12.2019, 17:22  [ТС]
DrOffset, здравствуйте! Еще раз хотел поблагодарить вас и XLAT за вашу неоценимую помощь. У нас получилось внедрить ваш код из поста #30 в проект. Ошибка TLE отлавливается корректно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2019, 17:22

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

Как реализовать задержку выполнения определённой части программы без полной задержки всей программы?
Ниже представлен упрощённый код игры, в которой герой управляется ПКМ и подбирает предметы ЛКМ, которые перемещаются в инвентарь....

Остановка программы без предложения "Нажать любую клавишу"
в чистых сях для остановки в конце программы (чтобы не закрылась) я юзал getch, а что юзать в плюсах? кроме system(&quot;pause&quot;)?...

Последовательность выполнения программы
Добрый день, форумчане. Я бы хотел спросить такую вещь, код выполняется последовательно - сверху вниз, но у меня, как бы это глупо не...

Очерёдность выполнения программы
Опишу проблему в общих чертах: Пишу на C++ Есть программа, которая должна вызывать функцию, а после окончания работы функции выполнять...


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

Или воспользуйтесь поиском по форуму:
63
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru