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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Victorianec
20 / 20 / 6
Регистрация: 09.01.2014
Сообщений: 118
#1

Прерывание программы в процессе выполнения - C++

10.01.2014, 08:21. Просмотров 1931. Ответов 38
Метки нет (Все метки)

Доброго времени суток!
Подскажите, есть ли возможность прерывать программу во время выполнения? Т.е. у меня в программе есть цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах есть вывод промежуточных результатов. Если я по ним вижу, что эффективности я не получаю - я хочу перезапустить цикл с другими параметрами которые могу поменять не в коде, а до запуска цикла в самом интерфейсе программы, но остановить её могу только в компиляторе или диспетчере задач. Возможно ли как-то сделать так, чтоб программа не переставала реагировать на действия во время выполнения цикла?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 08:21     Прерывание программы в процессе выполнения
Посмотрите здесь:
C++ Выводятся непонятные сообщения в процессе выполнения программы
Выделение памяти в процессе выполнения функции C++
C++ Прерывание программы по ESC C++
Можно ли "подменить" тип данных в процессе выполнения? C++
C++ Указать тип массива в процессе работы программы
Динамические массивы. Ошибка в процессе работы программы. C++
Последовательность выполнения программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 09:38     Прерывание программы в процессе выполнения #2
Отслеживать в цикле нажатие клавиши:
C++
1
2
3
4
5
6
7
8
9
#include <conio.h>
...
for (; ;)
{
   ...
      if (kbhit())
            break;
   ...
}
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
10.01.2014, 12:29     Прерывание программы в процессе выполнения #3
Либо отправить выполнение цикла в другой поток, и прерывать также по клавише))))
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
10.01.2014, 13:56     Прерывание программы в процессе выполнения #4
Программа консольная? Нажать Ctrl+C и она завершится...
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 14:04     Прерывание программы в процессе выполнения #5
C++
1
2
3
4
5
6
int c;
 
while((c=getchar()) != 'e') //Для выхода нажать 'e' и Enter
{
      цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах          есть вывод промежуточных результатов.
}
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
10.01.2014, 14:11     Прерывание программы в процессе выполнения #6
Цитата Сообщение от ilja123 Посмотреть сообщение
while((c=getchar()) != 'e')
Нет. Так перед каждой итерацией будет запрашиваться нажатие клавиши.
К тому же, а зачем переменная-то?
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 14:16     Прерывание программы в процессе выполнения #7
Не будет! Весь цикл while на все тело программы, а уж внутри Скок хотите итераторов
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 14:20     Прерывание программы в процессе выполнения #8
Цитата Сообщение от ilja123 Посмотреть сообщение
Не будет!
Пример кода.
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 14:53     Прерывание программы в процессе выполнения #9
Так надо!!!!

C++
1
2
3
4
5
while(!kbhit())
    {
        cout << num << endl;
        num++;
    }
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 14:58     Прерывание программы в процессе выполнения #10
Цитата Сообщение от ilja123 Посмотреть сообщение
Так надо!!!!
Так можно. Пример кода с этим будет?
C++
1
2
3
4
5
6
int c;
 
while((c=getchar()) != 'e') //Для выхода нажать 'e' и Enter
{
      цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах          есть вывод промежуточных результатов.
}
Который:
Цитата Сообщение от ilja123 Посмотреть сообщение
Не будет!
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
10.01.2014, 15:00     Прерывание программы в процессе выполнения #11
Цитата Сообщение от ilja123 Посмотреть сообщение
Так надо!!!!
Так должно быть нормально. Но kbhit - это conio.h, если не ошибаюсь...
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 15:01     Прерывание программы в процессе выполнения #12
Нееее Над keyhit Он не ждет нажатия

Добавлено через 54 секунды
Цитата Сообщение от Qwertiy Посмотреть сообщение
Но kbhit - это conio.h, если не ошибаюсь...
а что с ним не так? в windows работает Про Linux не знаю
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
10.01.2014, 15:08     Прерывание программы в процессе выполнения #13
Цитата Сообщение от ilja123 Посмотреть сообщение
а что с ним не так? в windows работает
Хм.. Просто были у меня с ним проблемы в VS2005. Когда на getch клавиши считывались в совершенно рандомных местах. Т. е. код написан что нажать клавишу, а потом что-то сделать, а реально происходит наоборот... Возможно я тогда и сам что-то накосячил, но в Borland C++ 3.1 подобное работало, а в VS2005 что-то не захотело. С тех пор как-то не очень люблю подобные функции. Да и вообще, они изначально были предназначены для работы напрямую, а Windows такие штуки не позволяет давно уже, так что не очень представляю даже, как именно они в настоящее время работают...
Victorianec
20 / 20 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 15:15  [ТС]     Прерывание программы в процессе выполнения #14
Цитата Сообщение от Qwertiy Посмотреть сообщение
Программа консольная? Нажать Ctrl+C и она завершится...
Нет, VCL Form Application
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 15:37     Прерывание программы в процессе выполнения #15
Цитата Сообщение от Qwertiy Посмотреть сообщение
Windows такие штуки не позволяет
Ну для windows можно обрабатывать WM_KEYDOWN
Victorianec
20 / 20 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 15:41  [ТС]     Прерывание программы в процессе выполнения #16
alsav22, варианты с kbhit() не помогли.
ilja123, вставить while((c=getchar()) != 'e') тоже не сработает - не консоль у меня
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 15:44     Прерывание программы в процессе выполнения #17
Victorianec, У вас Windows? Ну так WM_KEYDOWN вам в помощ
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 15:51     Прерывание программы в процессе выполнения #18
Цитата Сообщение от Victorianec Посмотреть сообщение
варианты с kbhit() не помогли.
Что значит не помогли? Не срабатывает выход из цикла, или что?
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
10.01.2014, 15:52     Прерывание программы в процессе выполнения #19
Цитата Сообщение от alsav22 Посмотреть сообщение
Что значит не помогли?
Цитата Сообщение от Victorianec Посмотреть сообщение
не консоль у меня
Эм.. Чего бы тогда просто крестиком не закрывать???
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2014, 15:55     Прерывание программы в процессе выполнения
Еще ссылки по теме:
C++ Приостановка выполнения программы
C++ Время выполнения программы
Завершение выполнения программы C++
C++ Задержка выполнения программы
C++ Очерёдность выполнения программы

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

Или воспользуйтесь поиском по форуму:
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
10.01.2014, 15:55     Прерывание программы в процессе выполнения #20
Qwertiy,
Цитата Сообщение от Qwertiy Посмотреть сообщение
Чего бы тогда просто крестиком не закрывать???
Эм.. Не по программистки это

Добавлено через 25 секунд
Крестик удел юзеров

Добавлено через 1 минуту
Настоящий программист ВСЕГДА закрывает окно перехватом нажатия клавиши Escape!
Yandex
Объявления
10.01.2014, 15:55     Прерывание программы в процессе выполнения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru