Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
nolan
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 5
#1

Реализация меню пользователя

22.11.2016, 13:50. Просмотров 294. Ответов 1
Метки нет (Все метки)

Добрый день! Помогите реализовать меню пользователя, состоящее как минимум из 4-х пунктов:
a. ввод данных;
b. обработка данных;
c. вывод результата на экран;
d. выход.

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
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    puts("Введите текст");
 
    struct is_punct
    {
        bool operator ()(std::string::value_type ch) const
        {
            return punct.find(ch) != std::string::npos;
        }
        explicit is_punct(std::string const& p) : punct(p) {}
 
    private:
        std::string punct;
    };
    {
        std::string str;
        getline(std::cin, str);
        std::cout << std::count_if(str.begin(), str.end(), is_punct(".,:;'"()!?-")) << std::endl;
    }
    puts("Обработка текста завершена");
    {
        system("pause");
        {
            return 0;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2016, 13:50
Ответы с готовыми решениями:

Реализация меню. Массив элементов меню
Приветствую. Решил хранить элементы меню в массиве. Вот только элементы - это...

Реализация меню
сейчас для переключения по пунктам меню надо вводить номер пункта меню, а надо...

Реализация графического интерфейса пользователя в приложениях WinAPI. Ошибка default
Сама программа: // фывфвфыв.cpp: определяет точку входа для приложения. // ...

Реализация многоуровневого меню
Всем доброго дня! Помогите с кодом меню, проблема в том что нажимая клавишу 1...

Реализация разветвляющегося меню в консоли
Привет!, Помогите написать код что бы При Нажатие клавиши 1 выполнился код...

1
moskitos80
69 / 69 / 33
Регистрация: 04.10.2011
Сообщений: 243
Завершенные тесты: 1
22.11.2016, 15:30 #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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <vector>
#include <map>
 
#if defined(_WIN32) || defined(_WIN64)
    const char* CLEAR_SCREEN = "cls";
#else
    const char* CLEAR_SCREEN = "clear";
#endif
 
////////////////////////////////////////////////////////////////////////////////
 
typedef std::map<char, std::string> Menu;
typedef void (* menuHandler )(const Menu & menu, char choice);
typedef std::map<char, menuHandler> MenuSwitcher;
 
////////////////////////////////////////////////////////////////////////////////
 
void print_header(const std::string & text, std::size_t length = 79, char chr = '-')
{
    std::string hr;
    hr.insert(0, length, chr);
 
    std::cout << hr   << std::endl
              << text << std::endl
              << hr   << std::endl;
}
 
void render_menu(const Menu & menu, char choice = '-') {
    print_header("Select option");
    for(auto item: menu) {
        if (item.first == choice) { std::cout << "->"; }
        std::cout << "\t" << item.first << '.' << item.second << std::endl;
    }
}
 
////////////////////////////////////////////////////////////////////////////////
 
void inputDataScreen(const Menu & menu, char choice) {
    system(CLEAR_SCREEN);
    render_menu(menu, choice);
 
    std::cout << std::endl << "ВВОД ДАННЫХ" << std::endl;
    // ... тут код ввода данных
}
 
void processDataScreen(const Menu & menu, char choice) {
    system(CLEAR_SCREEN);
    render_menu(menu, choice);
 
    std::cout << std::endl << "ОБРАБОТКА ДАННЫХ" << std::endl;
    // ... тут код обработки данных
}
 
void outputDataScreen(const Menu & menu, char choice) {
    system(CLEAR_SCREEN);
    render_menu(menu, choice);
    std::cout << std::endl << "ВЫВОД ДАННЫХ" << std::endl;
    // ... тут код вывода данных
}
 
const int EXIT_ACTION = 1;
void exitScreen(const Menu & menu, char choice) {
    system(CLEAR_SCREEN);
    std::cout << "ПОКДА ;)" << std::endl;
    throw EXIT_ACTION;
}
////////////////////////////////////////////////////////////////////////////////
 
int main()
{
    setlocale(LC_ALL, "ru-RU.utf8");
 
    Menu menu = {
            {'a', "ввод данных;"},
            {'b', "обработка данных;"},
            {'c', "вывод результата на экран;"},
            {'d', "выход."}
    };
 
    MenuSwitcher switcher = {
            {'a', inputDataScreen},
            {'b', processDataScreen},
            {'c', outputDataScreen},
            {'d', exitScreen},
    };
 
    render_menu(menu, '-');
 
    for(char choice; std::cin >> choice; ) {
        try{
            switcher.at(choice)(menu, choice);
        } catch (const std::out_of_range & err) {
            system(CLEAR_SCREEN);
            std::cout << "I don`t understand your input try again ..." << std::endl;
            render_menu(menu, choice);
        } catch (int) { break; }
    }
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 15:30

Реализация меню выбора арифметических действий
Мне надо &quot;реализовать в программе меню выбора арифметических действий. В...

Реализация каждого отдельного пункта меню с условием
Помогите пожалуйста реализовать пункты текстового меню, всего 5 категорий, но...

Как сделать функцию, которая будет очищать экран и возвращать пользователя к главному меню?
Как сделать функцию, которая будет очищать экран и возвращать пользователя в...


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

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

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