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

Ответы 1

  • Ответ:

    #include <iostream>

    #include <conio.h>

    #include <windows.h>

    using namespace std;

    // Функція, яка змінює колір тексту в консолі

    void SetColor(int text, int background) {

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));

    }

    int main() {

    int choice = 1; // Змінна, яка зберігає обраний пункт меню

    // Назви пунктів меню

    string menu[] = {"Ввести записи", "Вивести записи", "Розрахувати кількість введених записів"};

    int menuSize = sizeof(menu) / sizeof(menu[0]); // Розмір масиву з пунктами меню

    // Цикл, який відображає меню та дозволяє обирати пункти за допомогою стрілок на клавіатурі

    while (true) {

    system("cls"); // Очищуємо консольний вікно перед виведенням меню

    // Виводимо назви пунктів меню та змінюємо колір назви обраного пункту

    for (int i = 0; i < menuSize; i++) {

    if (choice == i + 1) {

    SetColor(0, 2); // Зелений колір тексту на білому фоні

    }

    else {

    SetColor(0, 15); // Білий колір тексту на білому фоні

    }

    cout << menu[i] << endl;

    }

    // Обробка вибору пункту меню за допомогою стрілок на клавіатурі

    switch (getch()) {

    case 72: // Стрілка "Вгору"

    if (choice > 1) {

    choice--;

    }

    break;

    case 80: // Стрілка "Вниз"

    if (choice < menuSize) {

    choice++;

    }

    break;

    case 13: // Enter - підтвердження вибору

    // Обробка вибраного пункту меню

    switch (choice) {

    case 1:

    SetColor(0, 4); // Червоний колір тексту на білому фоні

    cout << "Ви обрали пункт \"Ввести записи\"" << endl;

    break;

    case

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

Войти через Google

или

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

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

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