Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.78
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
#1

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

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

Вобщем не прошу написать код полностью,просто расскажите или дайте ссылку где можно прочитать о подобном)
Смысл в том,что нужно сделать менюшку.Но как текстовую с тем условием что пользователь вводит номер пункта,который нужно реализовать я примерно знаю как сделать.Но можно сделать что бы как можно было выбирать с помощью стрелочек на клавиатуре(нажал вниз и флажочек переместился на нижний пункт).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2009, 19:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Меню в консольном режиме (C++):

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

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

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

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

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

Неправильно выдается матрица в консольном режиме - C++
Запускаю программу, а она выдает матрицу в таком виде сам код программы#include <iostream> #include<iomanip> #include <cstdlib> ...

12
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 08:19 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
вариант:
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
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
13.11.2009, 14:39  [ТС] #3
а если не сложно,Можете пояснить вообще саму идею))т.е. что за что отвечает)Я просто примерно предполагаю,но лучше,что бы вы объяснили))
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.11.2009, 15:07 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Строки 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 и выполняем один из пунктов.
6
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
13.11.2009, 18:18  [ТС] #5
спасибо большое)
0
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
18.11.2009, 19:53  [ТС] #6
ещё один вопрос - у меня вместо русских букв - крякозябры.Обычно я исправляю это дело с помощью setlocale() , но сейчас не получается(
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
18.11.2009, 19:58 #7
шрифты в консольном окне поставил ка люсида и это писал
// установить вручную шрифт Lucida Console в свойствах окна консоли
// и запомнить это для всех окон с этим именем
// записать в начале программы строку
#include <windows.h>
// записать в начале функции main ( после строки с символом { )
// две следующих строки
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
0
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
18.11.2009, 20:15  [ТС] #8
Цитата Сообщение от 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
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
18.11.2009, 20:43 #9
iliapl, поставь просто в начале мейна
C++
1
setlocale(LC_ALL, "Russian");
0
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
18.11.2009, 21:42  [ТС] #10
пробовал - не помогает

Добавлено через 45 минут
всем огромное спасибо,проблема решена)
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
18.11.2009, 22:59 #11
iliapl, написал бы как решил
0
Kriegehund
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
30.09.2013, 13:02 #12
а что означает код ASCII 224?
0
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
30.09.2013, 13:06 #13
Цитата Сообщение от Kriegehund Посмотреть сообщение
а что означает код ASCII 224?
#224=а -русская буква "а"
0
30.09.2013, 13:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 13:06
Привет! Вот еще темы с ответами:

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

Файловая база данных, управляемая в консольном интерактивном режиме - C++
Помогите пожалуйста. Не знаю с чего начать, а главное как реализовать в си. Нужно написать файловую базу данных, управляемую в...

Реализовать в консольном режиме изменение координат элемента в матрице при нажатии стрелки вверх - C++
Как в консольном режиме реализовать, что координаты элемента в матрице меняются при нажатии стрелки вверх?

Меню в консольном приложении - C++
есть ошибки не могу исправить #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru