Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Доброго времени суток!
Подскажите, есть ли возможность прерывать программу во время выполнения? Т.е. у меня в программе есть цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах есть вывод промежуточных результатов. Если я по ним вижу, что эффективности я не получаю - я хочу перезапустить цикл с другими параметрами которые могу поменять не в коде, а до запуска цикла в самом интерфейсе программы, но остановить её могу только в компиляторе или диспетчере задач. Возможно ли как-то сделать так, чтоб программа не переставала реагировать на действия во время выполнения цикла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 08:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прерывание программы в процессе выполнения (C++):

Выводятся непонятные сообщения в процессе выполнения программы - C++
Всем доброго дня ! Подскажите пожалуйста , почему при выводе строки (160) cout<<"\n******* "<<EmptyClass.GetName()<<" is...

Выделение памяти в процессе выполнения функции - C++
есть массив указателей на int, объявленный глобально int* arr; но заранее я не знаю, сколько мне понадобится одномерных массивов -...

Прерывание программы по ESC C++ - C++
доброй ночи Добрался до такой вот темы Пытаюсь реализовать перехват нажатия клавиши ESC и SPACE в консольном режиме Но программа не...

Можно ли "подменить" тип данных в процессе выполнения? - C++
Добрый день! Есть у меня такой кусок кода, описывающего класс. typedef vector<double> complex; typedef map<string, double>...

Указать тип массива в процессе работы программы - C++
Доброго времени суток, господа! Необходимо создать массив, тип данных которого будет задаваться в зависимости от значения переменной (1, 2...

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

38
alsav22
5431 / 4826 / 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;
   ...
}
1
ShadowFirst
55 / 48 / 1
Регистрация: 31.10.2013
Сообщений: 164
10.01.2014, 12:29 #3
Либо отправить выполнение цикла в другой поток, и прерывать также по клавише))))
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 13:56 #4
Программа консольная? Нажать Ctrl+C и она завершится...
0
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 407
10.01.2014, 14:04 #5
C++
1
2
3
4
5
6
int c;
 
while((c=getchar()) != 'e') //Для выхода нажать 'e' и Enter
{
      цикл, который может выполняться много тысяч раз, сто выполнений цикла может происходить от 5 до 30 и более секунд, на каждых 100 циклах          есть вывод промежуточных результатов.
}
1
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 14:11 #6
Цитата Сообщение от ilja123 Посмотреть сообщение
while((c=getchar()) != 'e')
Нет. Так перед каждой итерацией будет запрашиваться нажатие клавиши.
К тому же, а зачем переменная-то?
0
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 407
10.01.2014, 14:16 #7
Не будет! Весь цикл while на все тело программы, а уж внутри Скок хотите итераторов
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 14:20 #8
Цитата Сообщение от ilja123 Посмотреть сообщение
Не будет!
Пример кода.
0
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 407
10.01.2014, 14:53 #9
Так надо!!!!

C++
1
2
3
4
5
while(!kbhit())
    {
        cout << num << endl;
        num++;
    }
0
alsav22
5431 / 4826 / 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 Посмотреть сообщение
Не будет!
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 15:00 #11
Цитата Сообщение от ilja123 Посмотреть сообщение
Так надо!!!!
Так должно быть нормально. Но kbhit - это conio.h, если не ошибаюсь...
0
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 407
10.01.2014, 15:01 #12
Нееее Над keyhit Он не ждет нажатия

Добавлено через 54 секунды
Цитата Сообщение от Qwertiy Посмотреть сообщение
Но kbhit - это conio.h, если не ошибаюсь...
а что с ним не так? в windows работает Про Linux не знаю
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
10.01.2014, 15:08 #13
Цитата Сообщение от ilja123 Посмотреть сообщение
а что с ним не так? в windows работает
Хм.. Просто были у меня с ним проблемы в VS2005. Когда на getch клавиши считывались в совершенно рандомных местах. Т. е. код написан что нажать клавишу, а потом что-то сделать, а реально происходит наоборот... Возможно я тогда и сам что-то накосячил, но в Borland C++ 3.1 подобное работало, а в VS2005 что-то не захотело. С тех пор как-то не очень люблю подобные функции. Да и вообще, они изначально были предназначены для работы напрямую, а Windows такие штуки не позволяет давно уже, так что не очень представляю даже, как именно они в настоящее время работают...
0
Victorianec
20 / 20 / 6
Регистрация: 09.01.2014
Сообщений: 118
10.01.2014, 15:15  [ТС] #14
Цитата Сообщение от Qwertiy Посмотреть сообщение
Программа консольная? Нажать Ctrl+C и она завершится...
Нет, VCL Form Application
0
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 407
10.01.2014, 15:37 #15
Цитата Сообщение от Qwertiy Посмотреть сообщение
Windows такие штуки не позволяет
Ну для windows можно обрабатывать WM_KEYDOWN
0
10.01.2014, 15:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2014, 15:37
Привет! Вот еще темы с ответами:

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

Задержка выполнения программы - C++
Ребята, помогите найти проблему плз.. Дело в том, что при запуске программы она висит 20 сек, и только потом передается управление...

Завершение выполнения программы - C++
Добрый вечер. Пишу рогалик. Нужно сделать, что бы когда герой умирал (при вызове его деструктора) до того как программа крашнется...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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