Ожидание ввода в течение некоторого интервала времени - 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");

Объяснение кода листинга программы

  1. Объявлены две переменные: i и was_hit типа int
  2. Вычислено значение переменной c с помощью функции clock()
  3. Запущен бесконечный цикл while (1)
  4. Внутри цикла происходит обновление значения переменной new_c с помощью функции clock()
  5. Проверяется условие ((new_c - c)/(double)CLOCKS_PER_SEC >= 3.0)
  6. Если условие выполняется, то происходит выход из цикла с помощью оператора break
  7. Проверяется условие kbhit()
  8. Если условие выполняется, то происходит ввод значения переменной i с помощью функции scanf()
  9. Переменная was_hit принимает значение 1
  10. Выполняется оператор break для выхода из цикла
  11. После завершения цикла проверяется значение переменной was_hit
  12. Если was_hit равно 1, то выводится значение переменной i с помощью функции printf()
  13. Если was_hit равно 0, то выводится сообщение Opozdal ept с помощью функции puts()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы