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

Числа Фибоначчи, простые числа и делители - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу понять где подвох! http://www.cyberforum.ru/cpp-beginners/thread1182680.html
Есть программа, она создает объект Group в котором есть односвязный список и хранятся имена файлов. Выборка файлов осуществляется за определенными критериями. Проблема! Программа записывает в список файлы за определенными критериями и далее записывает остальные файлы которые идут после последнего выбранным за критериям. Код генерации объекта //genarate class group by size ...
C++ Блок-схема шифра Виженера Здравствуйте. Помогите составить блок-схему шифра Виженера. Вот код программы: #include <iostream> #include <conio.h> #include <windows.h> #include <string> #include <cstdlib> using namespace std; class cystr { http://www.cyberforum.ru/cpp-beginners/thread1182658.html
C++ Алгоритм кодирование длин серий
Помогите данный код реализовать взяв за блок данных: char data = {'a','a','a','a','a','c','b','b','c','c','g','k','b','b','b','b'}; в реализации двух функций: void encoder(...); void decoder(...); #include <stdio.h> #include <string.h>
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел C++
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел больших исходных на два порядка. Напечатать массивы в два столбца.
C++ Вычислить среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами http://www.cyberforum.ru/cpp-beginners/thread1182632.html
Мое условие: Дан вещественный массив A, в котором не повторяются значение элементов. Вычислить среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами массива А. Программный код: #include "stdafx.h" #include <cstdlib> #include <iostream> using namespace std; void main() {
C++ Записать по одному элементу числовую матрицу в бинарный файл Помогите пожалуйста найти ошибку в коде #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> #include <iostream> #include <cstdlib> using namespace std; int main() подробнее

Показать сообщение отдельно
outoftime
║XLR8║
507 / 429 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
22.05.2014, 02:41     Числа Фибоначчи, простые числа и делители
Shushan, the same idea like in case with main menu, but it will be submenu. Also you can make your class which will take care about menu (input request and response reading, possible using templates). Any way, it's so trivial task.. I'll wait for interesting questions.

Добавлено через 1 час 15 минут
Shushan, I had try to make it using concept Predicate, but I cann't. In example below, you have template function for input customizable type with value checking.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <functional>
 
template <typename InputType>
InputType make_menu(const std::string& request, std::function<bool(InputType)> validator) {
    InputType response;
        
    do 
    {
        std::cout << request;
        std::cin >> response;
    } 
    while (!validator(response));
    
    return response;
}
 
int main () {
    int res = make_menu<int>("Input int in range 0..99: ", 
        [](const int& value) { return value > -1 && value < 100; });
    std::cout << res << std::endl;
}
Feels like writing own command parameters parsing.
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
#include <iostream>
#include <functional>
#include <vector>
 
template <typename T>
class menu {
public:
    typedef std::tuple<std::string, std::function<bool(T)>, 
        std::function<void()>> menu_item;
    
    menu(const std::string& caption, const std::vector<menu_item>& items, 
        const bool& recursive = false) 
        : _caption(caption), _items(items), _recursive(recursive) { }
    
    void run() {
        T response;
        
        while (_recursive) {
            do 
            {
                std::cout << _caption;
                for (const auto& tuple: _items)
                    std::cout << std::get<0>(tuple);
            
                std::cin >> response;
            } 
            while (!validate(response));
        
            for (const auto& tuple: _items)
                if (std::get<1>(tuple)(response))
                    std::get<2>(tuple)();
                    
            if (_recursive && std::get<1>(_items.back())(response))
            {
                break;
            }
        }
    }
    
private:
    bool validate(const T& response) {
        for (const auto& tuple: _items)
            if (std::get<1>(tuple)(response))
                return true;
            
        return false;
    }
 
    const std::string _caption;
    const std::vector<menu_item> _items;
    const bool _recursive;
};
 
int main () {
    menu<int> m{"Select the type of numbers to print:\n",
        {
            std::make_tuple("1. Fibonacci series\n",
                [](const int& value) { return value == 1; },
                [](){ std::cout << "Fibonacci series\n"; }
            ),
            std::make_tuple("4. Quit\n",
                [](const int& value) { return value == 4; },
                [](){}
            )
        }, 
        true
    };
    m.run();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru