Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 42
1

Последовательность Хэмминга

13.06.2016, 09:32. Просмотров 2211. Ответов 6
Метки нет (Все метки)


Последовательность Хэмминга образуют натуральные числа, не имеющие других простых делителей, кроме 2, 3 и 5. Найти: сумму первых N элементов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2016, 09:32
Ответы с готовыми решениями:

Последовательность Хэмминга
1)Даны натуральные числа a,b (a<=b). Получить все простые числа p, удовлетворяющие неравенству...

код Хэмминга
требуется написать программу, (кодер/декодер) код хэмминга (15,11) вводим ошибку срочно

Код Хэмминга
Здравствуйте, помогите написать код Хэмминга на языке новичка, без векторов и т.д. сложного (через...

Код Хэмминга
Прошу объяснить как работает этот код Хэмминга и написать прогу по заданию. Задание. ...

6
4455 / 2074 / 263
Регистрация: 01.03.2013
Сообщений: 5,509
Записей в блоге: 22
13.06.2016, 16:25 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
#include <iostream>
#include <functional>
using namespace std;
 
typedef std::pair<bool, int>  li_t;
typedef std::function<li_t()> fi_t;
 
int main() {
    fi_t nil  = []() -> li_t {return std::make_pair(false, 0);};
    auto null = [](li_t a) -> bool {return !a.first;};
    auto val  = [](li_t a) -> int  {return a.second;};
    
    auto cons = [](int a, const fi_t& l) -> fi_t {
        int p=0; return [=]() mutable -> li_t {
                    if (p) return l(); else {p=1; return std::make_pair(true, a);}};};
    
    auto map = [cons,nil,null,val](const auto& f, const fi_t& l) -> fi_t {
        auto go = [f,cons,nil,null,val](const fi_t& l, const auto& la) -> fi_t {
            li_t e=l(); return null(e) ? nil : cons(f(val(e)), la(l, la));};
        return go(l, go);};
        
    auto show = [null,val](const fi_t& l) -> int {
        auto go = [null,val](const fi_t& l, auto& la) -> int {
            li_t e=l(); if (null(e)) {cout<<'\n'; return 0;}
                        else {cout<<val(e)<<'\t'; return la(l, la);}};
        return go(l, go);};
     
    auto merge = [cons,nil,null,val](const fi_t& a, const fi_t& b) -> fi_t {
        auto go = [cons,nil,null,val](const fi_t& a, const fi_t& b, const auto& la) -> fi_t {
            li_t ea=a(), eb=b();
            return null(ea) && null(eb) ? nil :
                null(ea) ? cons(val(eb), b) : null(eb) ? cons(val(ea), a) :
                val(ea)<val(eb) ? cons(val(ea), la(a, cons(val(eb), b), la)) :
                val(ea)>val(eb) ? cons(val(eb), la(cons(val(ea), a), b, la)) :
                                  cons(val(ea), la(a, b, la));};
        return go(a, b, go);};
    
    auto take = [cons,nil,null,val](int n, const fi_t& l) -> fi_t {
        auto go = [cons,nil,null,val](int i, const fi_t& l, const auto& la) -> fi_t {
            li_t e=l(); return (!i) || null(e) ? nil : cons(val(e), la(i-1, l, la));};
        return go(n, l, go);};
        
    auto equal = [null,val](const fi_t& a, const fi_t& b) -> bool {
        auto go = [null,val](const fi_t& a, const fi_t& b, const auto& la) -> bool {
            li_t ea=a(), eb=b();
            return null(ea) && null(eb) ? true : null(ea) ? false : null(eb) ? false :
                val(ea)==val(eb) ? la(a, b, la) : false;};
        return go(a, b, go);};
   
    auto hammingList = [=](int n) -> fi_t {
        
        auto step = [merge,map,cons](const fi_t& l) -> fi_t {
            auto sc = [map](int n, const fi_t& l) -> fi_t {
                return map([n](int i)->int {return i*n;}, l);};
            fi_t l2=l, l3=l, l5=l;
            return cons(1, merge(sc(2, l2), merge(sc(3, l3), sc(5, l5))));};
            
        auto go = [n,step,take,equal](const fi_t& l, const auto& la) -> fi_t {
            fi_t l0=l, le0=l, l1=step(l), le1=l1;
            if (equal(take(n,le0), take(n,le1))) return take(n,l0);
            else return la(l1, la);};
 
        return go(cons(1,nil), go);};
    
    auto foldr = [cons,nil,null,val](const auto& f, auto a, const fi_t& l) -> fi_t {
        auto go = [f,cons,nil,null,val](auto a, const fi_t& l, const auto& la) -> fi_t {
            li_t e=l(); return null(e) ? a : f(val(e), la(a, l, la));};
        return go(a, l, go);};
    
    int N; cin >> N;
 
    fi_t h = hammingList(N);
    //show(h);
 
    cout << "Sum = " << val(foldr(
        [cons,nil,val](int a, const fi_t& b) -> fi_t {return cons(a+val(b()), nil);},
        cons(0,nil), h) ()) << '\n';
    
    return 0;
}
1
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 42
13.06.2016, 17:13  [ТС] 3
Забыл сказать что программу нужно написать не через функции...
0
417 / 248 / 168
Регистрация: 06.06.2016
Сообщений: 501
13.06.2016, 20:18 4
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
#include <iostream>
 
 bool is_Hamming( const unsigned &k )
 {
       if ( k < 2 )
         return false;
   unsigned test = k;
       while ( !(test % 2) )
         test /= 2;
       while ( !(test % 3) )
         test /= 3;
       while ( !(test % 5) )
         test /= 5;
   return ( test == 1 );
 }
 //-----------------------------------------------------------------
 unsigned long  sum_hamming_numbers( unsigned n )
 {
   unsigned long  sum = 0;
       for ( unsigned  i = 2, counter = 0; counter < n ; ++i  )
       {
             if ( is_Hamming( i ) )
             {
               sum += i;
               ++counter;
             }
       }
   return sum;
 }
 //-----------------------------------------------------------------
 int  main()
 {
   std::cout << sum_hamming_numbers( 5 ) << std::endl;
   //std::cin.get();
   return 0;
 }
0
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 42
14.06.2016, 09:20  [ТС] 5
Не работает. А можно эту программу как бы просто линейно написать?
0
10 / 10 / 3
Регистрация: 02.07.2013
Сообщений: 52
14.06.2016, 10:18 6
flames, Поиск же. Или с паскалем не дружны?
0
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 42
14.06.2016, 17:39  [ТС] 7
Нет, не знаю.

Добавлено через 4 часа 18 минут
А вы можете написать?

Добавлено через 1 час 5 минут
Помогите кто нибудь, а то сдавать уже скоро...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2016, 17:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Коды Хэмминга С++
Коды Хэмминга С++

Код Хэмминга
Всем привет, разбираю пример кода Хмминга, подскажите плз, что это за фрагменты void...

Декодер Хэмминга
Пишу кодер и декодер Хэмминга (15,11). В начале это была одна программа и использовались одни и...

Кодирование Хэмминга
Сори за тупой вопрос Как закодировать текст данным методом? Сам принцип работы понятен (тот что с...

Расширенный код Хэмминга
Всем привет!... Наткнулся на задачу... Сгенерируйте все возможные кодовые слова расширенного кода...

Генерация чисел Хэмминга
Задание 2.24. Генерация чисел Хэмминга Числами Хэмминга называются натуральные числа, которые...


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

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

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