Написати функцію, що реалізовуватиме функціональне меню. Має прийняти два масиви рівного розміру. З назвами пунктів та з діями, що ці пункти виконують. Переміщення організувати за допомогою стрілочок. НЕ ВИКОРИСТОВУВАТИ if/else, switch/caѕе чи тернарні оператори для реалізації виконання дій при виборі пункту.без аикористання вектора та рядків,c++
Answers & Comments
Ответ:
Ось приклад функції, що реалізовує функціональне меню з використанням стрілочок для переміщення між пунктами. Функція приймає два масиви - один масив з назвами пунктів меню та другий масив з діями, які ці пункти виконують. У цьому прикладі використовується масиви типу char*, але ви можете змінити цей тип на відповідний тип даних в вашому випадку.
#include <iostream>
void displayMenu(const char** options, const char** actions, int size) {
int choice = 0;
char arrow;
while (true) {
system("cls"); // очищення екрану (потрібно вказати відповідну команду для очищення екрану на вашій ОС)
// виведення пунктів меню та виконання дії для обраного пункту
for (int i = 0; i < size; i++) {
if (i == choice) {
std::cout << "> " << options[i] << " (" << actions[i] << ")" << std::endl;
} else {
std::cout << " " << options[i] << " (" << actions[i] << ")" << std::endl;
}
}
// отримання вводу від користувача
arrow = _getch(); // потрібно включити <conio.h> для використання _getch()
// перевірка стрілочок та зміщення обраного пункту
if (arrow == 72) { // стрілка вгору
choice--;
if (choice < 0) {
choice = size - 1;
}
} else if (arrow == 80) { // стрілка вниз
choice++;
if (choice == size) {
choice = 0;
}
} else if (arrow == 13) { // Enter - обраний пункт
// виконання дії для обраного пункту
std::cout << "\nВи обрали: " << options[choice] << std::endl;
std::cout << "Виконуюча дія: " << actions[choice] << std::endl;
break;
}
}
}
int main() {
const char* menuOptions[] = {"Пункт 1", "Пункт 2", "Пункт 3", "Вихід"};
const char* menuActions[] = {"Дія 1", "Дія 2", "Дія 3", "Вийти з меню"};
int menuSize = sizeof(menuOptions) / sizeof(menuOptions[0]);
displayMenu(menuOptions, menuActions, menuSize);
return 0