• С++ Підкажіть, як зробити, щоб користувач в консольному вікні мав змогу за допомогою стрілок на клавіатурі обирати пункт, який забажає.Наприклад:МЕНЮВвести записиВивести записиРозрахувати кількість введених записів І користувач за допомогою клавіш обирає бажаний варіант. Як це реалізувати в С++?​

Ответы 2

  • Ответ:

    Для этого можно использовать библиотеку windows.h и функцию GetAsyncKeyState(). Пример кода:

    #include <iostream>

    #include <Windows.h>

    int main()

    {

    int selected_item = 1; // выбранный пункт меню

    bool is_enter_pressed = false; // была ли нажата клавиша Enter

    while (!is_enter_pressed)

    {

    std::system("cls"); // очистим экран консоли

    std::cout << "МЕНЮ\n\n";

    // выведем список пунктов меню и подсветим выбранный пункт

    if (selected_item == 1) std::cout << "-> ";

    std::cout << "Ввести записи\n";

    if (selected_item == 2) std::cout << "-> ";

    std::cout << "Вывести записи\n";

    if (selected_item == 3) std::cout << "-> ";

    std::cout << "Рассчитать количество введенных записей\n";

    // обработаем ввод с клавиатуры

    for (int i = 1; i <= 3; i++)

    {

    if (GetAsyncKeyState(VK_UP) && selected_item > 1) selected_item--;

    if (GetAsyncKeyState(VK_DOWN) && selected_item < 3) selected_item++;

    if (GetAsyncKeyState(VK_RETURN)) is_enter_pressed = true;

    }

    }

    std::system("cls"); // очистим экран консоли

    std::cout << "Выбран пункт " << selected_item << std::endl;

    return 0;

    }

    В данном примере список пунктов меню выводится в консольном окне, а выбор осуществляется с помощью клавиш Up и Down для перемещения между пунктами и клавиши Enter для выбора пункта. Функция GetAsyncKeyState() проверяет, была ли нажата клавиша, и если была, то изменяет выбранный пункт или выходит из цикла выбора пункта.

  • Відповідь:

    Для этого можно использовать библиотеку windows.h и функцию GetAsyncKeyState(). Пример кода:

    #include <iostream>

    #include <Windows.h>

    int main()

    {

    int selected_item = 1; // выбранный пункт меню

    bool is_enter_pressed = false; // была ли нажата клавиша Enter

    while (!is_enter_pressed)

    {

    std::system("cls"); // очистим экран консоли

    std::cout << "МЕНЮ\n\n";

    // выведем список пунктов меню и подсветим выбранный пункт

    if (selected_item == 1) std::cout << "-> ";

    std::cout << "Ввести записи\n";

    if (selected_item == 2) std::cout << "-> ";

    std::cout << "Вывести записи\n";

    if (selected_item == 3) std::cout << "-> ";

    std::cout << "Рассчитать количество введенных записей\n";

    // обработаем ввод с клавиатуры

    for (int i = 1; i <= 3; i++)

    {

    if (GetAsyncKeyState(VK_UP) && selected_item > 1) selected_item--;

    if (GetAsyncKeyState(VK_DOWN) && selected_item < 3) selected_item++;

    if (GetAsyncKeyState(VK_RETURN)) is_enter_pressed = true;

    }

    }

    std::system("cls"); // очистим экран консоли

    std::cout << "Выбран пункт " << selected_item << std::endl;

    return 0;

    }

    В данном примере список пунктов меню выводится в консольном окне, а выбор осуществляется с помощью клавиш Up и Down для перемещения между пунктами и клавиши Enter для выбора пункта. Функция GetAsyncKeyState() проверяет, была ли нажата клавиша, и если была, то изменяет выбранный пункт или выходит из цикла выбора пункта.

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years