Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366

Выполнение действий с возможностью действия

28.08.2013, 18:27. Показов 795. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Извиняюсь за теоретический вопрос, но все же попробую обратиться к вашим экстрасенсорным способностям.

Есть последовательность действий(функции выполняющие определенные действия) которую нужно выполнять, есть переменная-переключатель действий(int a), изменение которой должно приводить к переключению действий. Я с помощью таймера контролирую значение этой переменной(переключателья действия) и в зависимости от значения выполняю действие.
Выглядит это примерно так:
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
int i = 0;
 
void TForm1::ButtonClick()
{
    if(i==0)
    {
        Timer1->Enable = true; // по нажатию кнопки включаю таймер
        i++;
    }
     else if(i!=0)
    {
         Timer1->Enable = false;//
         i = 0;
     }
}
 
 
void TForm::TimerStart()              //Работа таймера с установленным интервалом 
{
    switch(a)
    {
        case 0:
        {
            действие0();
            a = 2;
            break;
        }
        case 1:
        {
            действие1();
            a = 2;
            break;
        }
        case 2:
        {
            действие2();
        if(определенные обстоятельства)
        {
            a = 1;
            break;
        }
         a = 0;
         break;
       }
    }
}
Проблема в том, что тики таймера приходят во время когда, допустим, выполняется действие 2 и переменная все еще равна тому значению для выполнения второго действия, соответственно программа вновь начинает выполнять второе действие....
Как реализовать цикл с точным выполнением действий и возможностью выхода из этого цикла?
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.08.2013, 18:27
Ответы с готовыми решениями:

Ставлю задержку на выполнение действий в цикле - задержка ставится почему то на выполнение всего скрипта
Здравствуйте! Код элементарный: $s = $_POST; $s = preg_replace('/ {2,}/',' ',$s); for ($i = 0; $i < strlen($s);...

Выполнение действия на странице после срабатывания действия в другом скрипте
В теле страницы есть скрипт такого вида: <script>(function(d,a,b){let...

Функция с таймером выбора действия или выполнение действия по умолчанию
Нужна функция которая выполнит действие по умолчанию, если пользователь не ввел в интерактивное меню ничего. Ниже приведен пример: ...

3
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
28.08.2013, 18:41
можно поставить флаг занятости
например так
C++
1
2
3
4
5
6
7
8
9
10
11
case 0:
 {
   if(flag==0)
    {  
     flag=1;
     действие0();
      a = 2;
      flag=0;
      }
      break;
    }
можно воспользоваться семафорами, мютексами
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
28.08.2013, 19:26  [ТС]
можно поставить флаг занятости
C++
1
2
3
4
5
6
7
8
9
10
11
case 0:
 {
   if(flag==0)
    {  
     flag=1;
     действие0();
      a = 2;
      flag=0;
      }
      break;
    }
Не понял идею...
воспользоваться семафорами
У меня один процесс и поток...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
28.08.2013, 19:37
смотри
при первом заходе flag равен 0
значит заходим в тело условия
задаем flag =1
выполняем действие0();
в это время таймер опять срабатывает но флаг равен 1
значит условие не срабатывает и выходим из обработчика
действие0(); закончилось
и flag опять обнулился
при следуешем срабатывании таймера можем опять производить действия
можно вообще весь свич обернуть этим условием
разумеется flag не может быть локальной переменной, иначе каждый раз при заходе в функцию будет создаватся заново
или глобальная или статическая или член класса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2013, 19:37
Помогаю со студенческими работами здесь

Как ускорить выполнение кода? (Получение цвета пикселя, сравнение и выполнение действия)
Всем привет. Нужна консультация экспертов) Программа такая. Есть пиксель на экране, в нем то появляется яркий цвет, то темный (лампочка...

Форма с возможностью выбора последующих действий
Всем доброй ночи (по моему времени :) ) Суть вопроса вот в чём... предположим мы имеем форму поля в ней хайд со значениями то есть видно...

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

Выполнение действий в if
Есть форма, в которой хочу реализовать такое, что при нажатии на кнопку "Информация" будут на определённое время появляться уровень...

Гаджет - кнопка с возможностью определения действия
Не нашел подходящей темы в других разделах форума, но поскольку этот раздел я посещаю чаще всего, спрошу тут, а модераторы перенесут если...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru