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

Получить все числа Армстронга - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать функцию SUM (int M, int N) / С++ для начинающих http://www.cyberforum.ru/cpp-beginners/thread1112924.html
Написать функцию SUM (int M, int N), которая вычисляет и возвращает сумму всех чисел кратных 3 и 9 в пределах от M и N включительно . Использовать оператор цикла с параметром.
C++ Найти разность суммы положительных и произведения отрицательных чисел массива Найти разность суммы положительных и произведения отрицательных чисел массиванапишите программу,пожалуйста))) http://www.cyberforum.ru/cpp-beginners/thread1112907.html
C++ Вроде простой код, но съедает 1,5 гб оперативы, как это исправить?
вроде простой код, но съедает 1,5 гб оперативы, как это исправить? #include <iostream> int M = 20000; float **A; int main(void){ A = new float*; for ( int i = 0; i < M; ++i ) A = new float;
Найти произведение положительных кратных 3 элементов C++
Найти произведение положительных кратных 3 элементов
C++ Найти количество отрицательных элементов, находящихся на побочной диагонали http://www.cyberforum.ru/cpp-beginners/thread1112901.html
Найти количество отрицательных элементов, находящихся на побочной диагонали))))помогите,пожалуйста:cry:
C++ Ввести две строки символов A и B. Создать строку С следующим образом С1 = A1, C2 = В1, С3 = А2, С4 = В2 Ввести две строки символов A и B. Создать строку С следующим образом С1 = A1, C2 = В1, С3 = А2, С4 = В2 То есть,если A=1234 B=5678,то С=15263748 подробнее

Показать сообщение отдельно
volvo
Супер-модератор
 Аватар для volvo
22073 / 14378 / 4041
Регистрация: 22.10.2011
Сообщений: 25,445
Записей в блоге: 2
07.03.2014, 15:36     Получить все числа Армстронга
Вариант "Сорвать башню преподавателю" - метапрограммирование во всей красе:
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
#include <iostream>
 
template <int V, int P>
struct Power
{
    enum {result = V * Power<V, P - 1>::result};
};
template <int V>
struct Power<V, 0>
{
    enum {result = 1};
};
 
template <int N, int D>
struct Sum
{
    enum { value = Power<N % 10, D>::result + Sum<N / 10, D>::value };
};
template <int D>
struct Sum<0, D>
{
    enum {value = 0};
};
 
 
template <int n>
struct THEN
{
    static void func()
    {
        std::cout << n << std::endl;
    }
};
struct ELSE
{
    static void func() {}
};
 
 
template <bool Condition, class Then, class Else>
struct IF
{
    typedef Then RESULT;
};
template <class Then, class Else>
struct IF <false, Then, Else>
{
    typedef Else RESULT;
};
 
template <int N>
struct Digits
{
    enum {value = (N > 9 ? 1 : 0) + Digits<N / 10>::value};
};
template <>
struct Digits<0>
{
    enum {value = 1};
};
 
 
template <int From, int To>
class Loop
{
public:
    static inline void exec()
    {
        IF< Sum<From, Digits<From>::value>::value == From, THEN<From>, ELSE >::RESULT::func();
        Loop<(From > To ? 0 : From + 1), To>::exec();
    }
};
template <int To>
class Loop<0, To>
{
public:
    static inline void exec()
    {
    }
};
 
int main()
{
    Loop<10, 9999>::exec();
    return 0;
}
(для успешной компиляции добавил ключ -ftemplate-depth=10000, иначе компилироваться не будет, слишком большой уровень вложенности шаблонов. Но работает, выдает все 7 чисел Армстронга на заданном интервале)
 
Текущее время: 20:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru