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

оптимизация кода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ещё одна с матрицами,только более сложная http://www.cyberforum.ru/cpp-beginners/thread817594.html
Дана действительная матрица 7x7. Найти минимальное значе-ние среди элементов, стоящих над главной диагональю, и макси-мальное среди элементов, находящихся ниже главной диагонали, а также их местоположение. Сформировать одномерный массив, со-держащий сумму элементов четных строк и произведение элементов нечетных строк.
C++ Программа с матрицами. Найти минимальное значение среди четных элементов матрицы и сумму положительных элемен-тов матрицы Дана целочисленная матрица 5x7. Найти минимальное значение среди четных элементов матрицы и сумму положительных элемен-тов матрицы. http://www.cyberforum.ru/cpp-beginners/thread817593.html
C++ Программа с заполнением в файл
Помогите отладить, не смекаю, как исправить. Ошибка где-то в определении массивов, строка 20 выдает ошибку. #include <iostream> #include <cstdio> #include <cstring> #include <ctype.h> #define N 20; using namespace std; FILE *p1;
C++ Удаление элемента из списка и поиск элемента
Нужно удалить определенный элемент из списка. Найти элемент в списк и вывести на него всю информацию. Вот код. Не знаю как написать эти пункты. #include<iostream> #include <malloc.h> #include <string> #include<conio.h> #include<windows.h> using namespace std;
C++ Удаление элементов вектора http://www.cyberforum.ru/cpp-beginners/thread817569.html
как вызвать деструктор? почему не удаляется объект class a { public: a() { std::cout << "c"; } ~a() { std::cout << "d"; };
C++ Занести в двумерный массив значения функции Помогите пожалуйста с задачкой. Занести в двумерный массив значения функции f(x,y)=1/(x+y), o<=x<=30, 1<=y<=20 и вывести его на экран. Код: #include <iostream> #include <conio.h> using namespace std; подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.03.2013, 23:39     оптимизация кода
вот на коленке написано. собирается в с++ 11. нужно допиливать под свои нужды. но для демонстрации пойдет. тут главное - это возможность простого и легкого добавления новых команд (см. функцию main):
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <string>
 
class Menu
{
public:
    typedef std::function<void ()> Command;
 
public:
    Menu(const std::string& name)
        : m_name(name)
        , m_entered(false)
    {
    }
 
    void Register(const std::string& cmdId, Command cmd)
    {
        m_items[cmdId] = cmd;
    }
 
    void Enter()
    {
        RegisterHelpCommand();
        RegisterExitCommand();
 
        PrintMenuHelp(std::cout);
 
        m_entered = true;
 
        while (m_entered)
        {
            std::string cmdId;
            std::cin >> cmdId;
            ExecuteCommand(cmdId);
        }
    }
 
    void PrintMenuHelp(std::ostream& out) const
    {
        out << m_name << ':' << std::endl;
        for (auto item : m_items)
            out << "  " << item.first << std::endl;
    }
 
    void Exit()
    {
        std::cout << "Exit from " << m_name << std::endl;
        m_entered = false;
    }
 
    void RegisterExitCommand()
    {
        Register("exit", std::bind(&Menu::Exit, this));
    }
 
    void RegisterHelpCommand()
    {
        Register("help", std::bind(&Menu::PrintMenuHelp, this, std::ref(std::cout)));
    }
 
    void ExecuteCommand(const std::string& cmdId)
    {
        if (!IsRegistered(cmdId))
        {
            std::cout << "The '" << cmdId << "' is unknown command." << std::endl;
            return;
        }
 
        m_items[cmdId]();
    }
 
    bool IsRegistered(const std::string& cmdId) const
    {
        return m_items.find(cmdId) != m_items.end();
    }
 
private:
    typedef std::map<std::string, Command> MenuItems;
 
    std::string m_name;
    MenuItems m_items;
    bool m_entered;
};
 
 
////////////////////////////////////////////////////////////////////////////////
class Test
{
public:
    void Test1()
    {
        std::cout << "This is Test1" << std::endl;
    }
 
    void Test2()
    {
        std::cout << "This is Test2" << std::endl;
    }
 
    void Test3()
    {
        std::cout << "This is Test3" << std::endl;
    }
 
    void Test123()
    {
        Test1();
        Test2();
        Test3();
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    Test test;
 
    Menu rootMenu("RootMenu");
    Menu subMenu("SubMenu");
 
    rootMenu.Register("test1", std::bind(&Test::Test1, &test));
    rootMenu.Register("test2", std::bind(&Test::Test2, &test));
    rootMenu.Register("submenu", std::bind(&Menu::Enter, &subMenu));
 
    subMenu.Register("test3", std::bind(&Test::Test3, &test));
    subMenu.Register("test123", std::bind(&Test::Test123, &test));
 
    rootMenu.Enter();
 
    return 0;
}
 
Текущее время: 09:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru