Ожидание ввода в течение некоторого интервала времени - C (СИ)
Формулировка задачи:
int main() { char ch; ch='$'; /* в этом месте нужно написать фрагмент кода а именно, надо чтобы программа ожидала ввода символа(например, scanf) в течении установленного времени (нескольких секунд) после чего продолжается выполнение программы независимо от того был ли он введен или нет */ printf("%c \n",ch); return 0; }
Решение задачи: «Ожидание ввода в течение некоторого интервала времени»
textual
Листинг программы
int i; int was_hit = 0; clock_t c = clock(); clock_t new_c = 0; while (1) { new_c = clock(); if ((new_c - c)/(double)CLOCKS_PER_SEC >= 3.0) { break; } if (kbhit()) { scanf("%d", &i); was_hit = 1; break; } } if (was_hit) printf("I = %d", i); else puts("Opozdal ept");
Объяснение кода листинга программы
- Объявлены две переменные:
i
иwas_hit
типаint
- Вычислено значение переменной
c
с помощью функцииclock()
- Запущен бесконечный цикл while (1)
- Внутри цикла происходит обновление значения переменной
new_c
с помощью функцииclock()
- Проверяется условие ((new_c - c)/(double)CLOCKS_PER_SEC >= 3.0)
- Если условие выполняется, то происходит выход из цикла с помощью оператора break
- Проверяется условие kbhit()
- Если условие выполняется, то происходит ввод значения переменной
i
с помощью функции scanf() - Переменная
was_hit
принимает значение 1 - Выполняется оператор break для выхода из цикла
- После завершения цикла проверяется значение переменной
was_hit
- Если
was_hit
равно 1, то выводится значение переменнойi
с помощью функции printf() - Если
was_hit
равно 0, то выводится сообщениеOpozdal ept
с помощью функции puts()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д