Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/53: Рейтинг темы: голосов - 53, средняя оценка - 4.96
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29

Меню в консольном режиме

06.11.2009, 19:47. Показов 11111. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вобщем не прошу написать код полностью,просто расскажите или дайте ссылку где можно прочитать о подобном)
Смысл в том,что нужно сделать менюшку.Но как текстовую с тем условием что пользователь вводит номер пункта,который нужно реализовать я примерно знаю как сделать.Но можно сделать что бы как можно было выбирать с помощью стрелочек на клавиатуре(нажал вниз и флажочек переместился на нижний пункт).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2009, 19:47
Ответы с готовыми решениями:

Меню в консольном режиме.Текстовую с вводом номера строки, которую надо реализовать
Как написать? с чего начать? Где можно почитать об этом?

Кнопки и мышь в консольном режиме
Нужен совет. На борланде (консольное програмирование) нужно сделать приложение, где будет несколько кнопок. Межде кнопками можно...

Косяк с мышью в консольном режиме
Для более удобной работы в программе необходимо исспользование мышь. Нашел темки, как описать, все ясно и понятно. Разобрался. Прописал....

12
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
07.11.2009, 08:19
Лучший ответ Сообщение было отмечено как решение

Решение

вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int menu();
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int answer=menu();      
    switch (answer)
    {
        case 0: cout<<"Íå çàáóäüòå íàæàòü êíîïêó 'ñïàñèáî'"<<endl;break;
        case 1: cout<<"Âñå ðàâíî íå çàáóäüòå íàæàòü êíîïêó 'ñïàñèáî'"<<endl;break;
        case 2: cout<<"Íàæìèòå êíîïêó 'ñïàñèáî' è íà ýòîì ðàçîéäåìñÿ"<<endl;break;   
        case 3: cout<<"Ìîæåòå íå íàæèìàòü êíîïêó 'ñïàñèáî' íî åñëè íàæìåòå, ÿ íå îáèæóñü"<<endl;return 0;
    }
    system("pause");
    return 0;
}
 
int menu() {
        int key=0; 
        int code;  
        do {
                system("cls");  
                key=(key+4)%4;  
                if (key==0) cout<<"-> Ìíå î÷åíü íðàâèòñÿ ýòîò êîä."<<endl;        
                        else  cout<<"   Ìíå î÷åíü íðàâèòñÿ ýòîò êîä."<<endl; 
                if (key==1) cout<<"-> Ìåíÿ ýòîò êîä óñòðàèâàåò."<<endl; 
                        else  cout<<"   Ìåíÿ ýòîò êîä óñòðàèâàåò."<<endl; 
                if (key==2) cout<<"-> ß ñîãëàøóñü íà ýòîò êîä çà îòñóòñòâèåì äðóãèõ âàðèàíòîâ."<<endl; 
                        else  cout<<"   ß ñîãëàøóñü íà ýòîò êîä çà îòñóòñòâèåì äðóãèõ âàðèàíòîâ."<<endl; 
                if (key==3) cout<<"-> ß âîîáùå íå ñîáèðàþñü îöåíèâàòü ýòîò êîä. Îí ìåíÿ íå èíòåðåñóåò."<<endl; 
                        else  cout<<"   ß âîîáùå íå ñîáèðàþñü îöåíèâàòü ýòîò êîä. Îí ìåíÿ íå èíòåðåñóåò."<<endl; 
                code=getch();  
                if (code==224)
                {
                    code=getch();
                    if (code==80) key++; 
                    if (code==72) key--; 
                        }
           }while(code!=13); 
        system("cls");  
        return key; 
}
5
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
13.11.2009, 14:39  [ТС]
а если не сложно,Можете пояснить вообще саму идею))т.е. что за что отвечает)Я просто примерно предполагаю,но лучше,что бы вы объяснили))
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
13.11.2009, 15:07
Лучший ответ Сообщение было отмечено как решение

Решение

Строки 13-16 моего кода:
C++
1
2
3
4
case 0: cout<<"Не забудьте нажать кнопку 'спасибо'"<<endl;break;
case 1: cout<<"Все равно не забудьте нажать кнопку 'спасибо'"<<endl;break;
case 2: cout<<"Нажмите кнопку 'спасибо' и на этом разойдемся"<<endl;break;   
case 3: cout<<"Можете не нажимать кнопку 'спасибо' но если нажмете, я не обижусь"<<endl;return 0;
В один из case вы попадете при выборе какого-либо пункта меню. Здесь для примера я вывожу на экран одну из фраз (если Вы выбрали первый пункт меню, то выведется фраза "Не забудьте нажать кнопку 'спасибо'"). Если хотите то можете вместо вывода фраз вызывать свои функции.
Например если код будет таким:
case 0: int a=3; int b=4; cout<<a+b<<endl;break;
то при выборе первого пункта меню на эран будет выводится сумма a и b.
Строки 27-35:
C++
1
2
3
4
5
6
7
8
9
               key=(key+4)%4;  
                if (key==0) cout<<"-> Мне очень нравится этот код."<<endl;        
                        else  cout<<"   Мне очень нравится этот код."<<endl; 
                if (key==1) cout<<"-> Меня этот код устраивает."<<endl; 
                        else  cout<<"   Меня этот код устраивает."<<endl; 
                if (key==2) cout<<"-> Я соглашусь на этот код за отсутствием других вариантов."<<endl; 
                        else  cout<<"   Я соглашусь на этот код за отсутствием других вариантов."<<endl; 
                if (key==3) cout<<"-> Я вообще не собираюсь оценивать этот код. Он меня не интересует."<<endl; 
                        else  cout<<"   Я вообще не собираюсь оценивать этот код. Он меня не интересует."<<endl;
Именно здесь заложено, что пунктов меню будет 4 (количество поменять не сложно). И здесь описано, как выглядят эти пункты меню на экране.

Строки 36-41:
C++
1
2
3
4
5
6
 code=getch();  
                if (code==224)
                                {
                                        code=getch();
                                        if (code==80) key++; 
                                        if (code==72) key--;
Здесь идет считывание кода от клавиш-стрелок
Строка 43:
C++
1
          }while(code!=13);
Эта строка обеспечивает, что пока нажимаем стрелки или другие клавиши, то меню отображается на экране. Когда нажимаем enter, то выходим из режима меню.
Строки 26 и 44 - очистка экрана.
А общая идея такова:
начинается все в main(). Вызываем функцию menu(), которая и отображает на экране наше меню. Как только нажали enter, то номер выбранного пункта возвращает menu() и это значение присваивается переменной answer. С помощью оператора switch анализируем значение answer и выполняем один из пунктов.
7
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
13.11.2009, 18:18  [ТС]
спасибо большое)
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
18.11.2009, 19:53  [ТС]
ещё один вопрос - у меня вместо русских букв - крякозябры.Обычно я исправляю это дело с помощью setlocale() , но сейчас не получается(
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
18.11.2009, 19:58
шрифты в консольном окне поставил ка люсида и это писал
// установить вручную шрифт Lucida Console в свойствах окна консоли
// и запомнить это для всех окон с этим именем
// записать в начале программы строку
#include <windows.h>
// записать в начале функции main ( после строки с символом { )
// две следующих строки
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
18.11.2009, 20:15  [ТС]
Цитата Сообщение от TanT Посмотреть сообщение
шрифты в консольном окне поставил ка люсида и это писал
// установить вручную шрифт Lucida Console в свойствах окна консоли
// и запомнить это для всех окон с этим именем
// записать в начале программы строку
#include <windows.h>
// записать в начале функции main ( после строки с символом { )
// две следующих строки
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Ну допустим следующее итак уже есть:
C++
1
2
3
4
 #include <windows.h>
................................
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
// установить вручную шрифт Lucida Console в свойствах окна консоли

по поводу этого можно поподробнее)

Добавлено через 9 минут
Установил шрифт Lucida Console,нифига не помогает(
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.11.2009, 20:43
iliapl, поставь просто в начале мейна
C++
1
setlocale(LC_ALL, "Russian");
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
18.11.2009, 21:42  [ТС]
пробовал - не помогает

Добавлено через 45 минут
всем огромное спасибо,проблема решена)
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.11.2009, 22:59
iliapl, написал бы как решил
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
30.09.2013, 13:02
а что означает код ASCII 224?
0
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
30.09.2013, 13:06
Цитата Сообщение от Kriegehund Посмотреть сообщение
а что означает код ASCII 224?
#224=а -русская буква "а"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2013, 13:06
Помогаю со студенческими работами здесь

Управление шрифтами в консольном режиме
Пишу курсовик, тема легкая, но для &quot;приятного&quot; вывода результата было-бы не плохо немного отформатировать текст. Дело в том, что задание...

Обработка русского текста в консольном режиме.
Приветствую всех, Собственно вопрос: Создаю строковую переменную, посредством cin заношу в неё текст на русском, распечатываю...

Неправильно выдается матрица в консольном режиме
Запускаю программу, а она выдает матрицу в таком виде сам код программы#include &lt;iostream&gt; #include&lt;iomanip&gt; #include...

У кого есть исходник игры Го в консольном режиме?
Нужна помощь! Срочно! У кого есть исходник игры Го в консольном режиме? Или кто-то может помочь в написании??

Построение графика заданной функции в консольном режиме
Помогите понять, что от меня хотят XD


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru