Выход из цикла по Escape - C (СИ)
Формулировка задачи:
Есть небольшой текст программы
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> #define BOT_BORDER 1 #define UP_BORDER 10 #define QUIT 0 int main(int argc, const char **argv, const char **env) { int num1, num2, answ1=1; const unsigned short bb = BOT_BORDER, bu = UP_BORDER; unsigned short i; system("chcp 1251 > nul"); // моделируем большую поляризацию srand((unsigned)time(NULL)); rand(); printf("Программа-экзаменатор произведения двух чисел. (0 - выход)\n"); for(i=0; answ1!=QUIT ; ++i) { fflush(stdin); //генерируем два случайных числа num1=rand()%(bu-bb+1)+bb; num2=rand()%(bu-bb+1)+bb; printf(" %d) %d * %d = ", i+1, num1, num2); //читаем и сразу же сравниваем ответ scanf(" %d", &answ1) && answ1 == num1*num2 && printf("Ответ верный!\n") || answ1 == QUIT && printf("Завершение работы программы!\n") || printf("Ответ не верный.\n"); }; system("pause > nul"); return 0; }
Что она делает
: генерит два рандомных числа от верхней границы до нижней, спрашивает у пользователя его версию ответа и сравнивает со своей.Чего я хочу
: выход из цикла у меня организован вводом "0". Но это не совсем красиво, хотелось бы допустим ESC, но сравнивая имеющийся код int-a с 0x001B он отказывается выдавать true. Проблему, как мне кажется в том что считываю данные именно scanf-ом а нужено getchar-ом. Но если взять 2-ое получается ломается суть задачи т.к. у программы могут быть ответы 2х значные 10-ые цифры. Как решить не прибегая к дополнительному запросу пользователя на выход?Решение задачи: «Выход из цикла по Escape»
textual
Листинг программы
scanf("%d", &answ1); if(getchar() == QUIT_ESC || answ1 == QUIT)
Объяснение кода листинга программы
- Пользователю предлагается ввести число с помощью функции scanf.
- Функция getchar используется для получения следующего символа ввода пользователя.
- Если следующий символ ввода пользователя является символом Esc (QUIT_ESC), то выполнение программы завершается.
- Если введенное пользователем число равно QUIT, то выполнение программы также завершается.
- Если ни одно из вышеуказанных условий не выполняется, то программа продолжает работу, и пользователю предлагается ввести новое число.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д