Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В одномерном массиве состоящем из N вещественных элементов вычислить https://www.cyberforum.ru/ cpp-beginners/ thread534407.html
Здраствуйте. Пожалуйста сделайте эту же задачу то ко на С.Не на С++ а на C.
C++ В программе реализовать возможность записи объектов в файл и чтения объектов из файла
Добрый день, помогите, пожалуйста! У меня есть программа: #include <iostream> #include <locale.h> using namespace std; class train { int number_id; char destination; int time;
C++ Перегрузка оператора * https://www.cyberforum.ru/ cpp-beginners/ thread534375.html
Операция произведения применяется к объекту квадрат, при этом изменяются координаты центры фигуры. Результатом произведения является квадрат координаты центра которого равны произведению соответствующих координат умножаемых квадратов. То есть нам нужно сделать перегрузку оператора * при этом использовать дружественные функции, на экран должны выводится два любых квадрата с различными...
C++ Используя функции сформировать одномерный массив и отсортировать по возрастанию только те элементы массива, которые являются простыми числами Помогите закончить две задачи. 1. Используя функции сформировать одномерный массив и отсортировать по возрастанию только те элементы массива, которые являются простыми числами(делятся на 1 и сами на себя). #include<iostream.h> #include<stdlib.h> #include<conio.h> void mass(int n) { https://www.cyberforum.ru/ cpp-beginners/ thread534358.html
C++ Редактирование бинарного файла
возможно ли написать такую функцию которая будет редактировать бинарный файл?
C++ '...' was not declared in this scope https://www.cyberforum.ru/ cpp-beginners/ thread534333.html
Доброго времени суток. Столкнулся с одной проблемой при создании класса: имеется описание класса : class CDateTime { public: int year,mon,day,hour,min,sec,MDay; CDateTime(); CDateTime(int y,int m,int d,int h,int mi,int s); void operator = (const string str);
C++ Битовая сортировка! https://www.cyberforum.ru/ cpp-beginners/ thread534329.html
Всем привет. Нужно написать реферат по теме "Битовая сортировка". Такого в инете, а также Википедиях и прочих джерелах даже примерно не удалось найти. Находил что то подобное с "Карманная сортировка" или "Поразрядная сортировка". Но там информация насчет десятичной системы числения, а меня интересует ТОЛЬКО битовая, т.е. двоичная система числения. Примерный алгоритм: береться два кармана, или...
Шифрование алгоритмом TEA C++
Подскажите как можно зашифровать string переменную в коде программы? мне нужно функция, чтоб я туда вставил зашифрованный текст, а она во время работы программы расшифровала этот текст и вставила дальше в код
C++ Блок проверки операторов циклов Никак не могу найти где у меня ошибка,после того как добавил циклы Do While и For перестало работать.. case'4': { int sum=0; int n=1; cout << "Cycle While: "; while ((1/(n*n))>(DBL_MIN)) { sum+=(1/(n*n)); n++; https://www.cyberforum.ru/ cpp-beginners/ thread534322.html C++ Программа удаляющая программы https://www.cyberforum.ru/ cpp-beginners/ thread534303.html
Привет всем! Хочу написать программу удаляющую другие программы (как Add or Remove Programs в Windows). Какими функциями пользоваться? Я так понимаю, что надо удалять папку с программой и информацию из реестра. Если что-то похожее было в темах, киньте, пожалуйста, ссылку.
Вычисление числа Пи C++
Составить на языке C программу, которая по введённому N возвращает N-ю после запятой десятичную цифру числа Пи. На работу программа должна затрачивать не более 1 Гигафлопа (т.е. примерное время работы на современных ПК - не более 0.5 секунды). Примеры: Вход: 0 Выход: 3 Вход: 1
C++ Две точки в n-мерном пространстве X=(х1, х2, ..., хn), Y=(y1, y2, ...,yn) Даны две точки в n-мерном пространстве X=(х1, х2, ..., хn), Y=(y1, y2, ...,yn). Написать программу нахождения расстояния между этими точками и вектора XY. https://www.cyberforum.ru/ cpp-beginners/ thread534300.html
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
0

Хаффман с++ - C++ - Ответ 2853329

30.03.2012, 10:30. Показов 10244. Ответов 10
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравстуйте.
Это код хаффмана.
У меня вопрос, я не понял часть int 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
struct s_node
{
    int c;
    char ch;
    int n;
    std::vector<s_node*> br;
};
 
class my_ifstream: public std::ifstream
{
public:
    virtual my_ifstream& operator>>( char&);
    my_ifstream(const char *_Filename, std::ios_base::openmode _Mode = ios_base::in, int _Prot = (int)ios_base::_Openprot);
};
 
my_ifstream::my_ifstream(const char *_Filename, std::ios_base::openmode _Mode, int _Prot):std::ifstream(_Filename, _Mode, _Prot)
{
}
 
my_ifstream& my_ifstream::operator>>( char& ch)
{
    ch = get();
 
    return *this;
}
 
void tree_walk(s_node *);
void tree_del(s_node *);
void write_message();
 
std::ofstream fout("output.txt");
std::string table[256];
 
int main()
{
    my_ifstream fin("input.txt", std::ios_base::in | std::ios_base::binary);
    
    if (!fin.is_open())
    {
        std::cout << "Input file not found" << std::endl;
        
        system("pause");
 
        return 0;
    }
 
    std::vector< char> ch_set;
    std::vector<s_node> nodes;
    char ch;
    int j = 0;
 
    while (fin >> ch)
    {
        int i;
 
        for (i = 0; i < ch_set.size() && ch_set[i] != ch; i++);
 
        if (i == ch_set.size())
        {
            s_node t;
 
            ch_set.push_back(ch);
 
            t.ch = ch;
            t.n = 0;
            t.c = 0;
        
            nodes.push_back(t);
 
            my_ifstream fin2("input.txt", std::ios_base::in | std::ios_base::binary);
 
            while (fin2 >> ch)
                if (ch == nodes[j].ch)
                    nodes[j].n++;
 
            j++;
        }
    }
 
    for (int i = 0; i < nodes.size() - 1; i++)
        fout << "'" << nodes[i].ch << "'" << nodes[i].n << ", ";
    
    fout << "'" << nodes[nodes.size() - 1].ch << "'" << nodes[nodes.size() - 1].n << std::endl << std::endl;
 
    std::vector<s_node*> t;
 
    for (int i = 0; i < nodes.size(); i++)
    {
        t.push_back(new s_node);
        *t[i] = nodes[i];
    }
 
    while (t.size() > 1)
    {
        s_node *x;
 
        for (int i = 0; i < t.size(); i++)
            for (int j = 0; j < t.size(); j++)
                if (t[i]->n < t[j]->n)
                    x = t[i], t[i] = t[j], t[j] = x;
 
        s_node *min1 = t[0];
        int c1 = 0;
 
        t.erase(t.begin() + c1);
        
        s_node *min2 = t[0];
        int c2 = 0;
 
        s_node *tmp = new s_node;
 
        tmp->br.push_back(min1);
        tmp->br.push_back(min2);
 
        tmp->c = 2;
        tmp->n = min1->n + min2->n;
        t[c2] = tmp;
    }
 
    tree_walk(t[0]);
    write_message();
    tree_del(t[0]);
 
    return 0;
}
 
void tree_walk(s_node *root)
{
    static std::string s = "";
 
    if (root->c)
    {
        s += "1";
        
        tree_walk(root->br[1]);
        s.erase(s.size() - 1, 1);
        
        s +="0";
 
        tree_walk(root->br[0]);
        s.erase(s.size() - 1, 1);
    }
    else
    {
        fout << "'" << root->ch << "'" << " = " << s << std::endl;
        table[root->ch] = s;
    }
}
 
void tree_del(s_node *root)
{
    if (root->c)
    {
        tree_del(root->br[1]);
        tree_del(root->br[0]);
    }
    else
        delete root;
}
 
void write_message()
{
    my_ifstream fin("input.txt");
    char ch;
 
    fout << std::endl;
 
    while(fin >> ch)
        fout << table[ch];
}


Вернуться к обсуждению:
Хаффман с++ C++
0
Лучшие ответы (1)
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2012, 10:30
Готовые ответы и решения:

Хаффман, исходник
Вечер добрый, найден неплохой исходник... как-то не могу понять на что ругается... некая tolower...

Хаффман. Выводит лишний элемент
Здравствуйте. Делаю алгоритм Хаффмана через файлы. Но есть одна проблема, которую я понять не могу....

Как организовать побитовую запись двоичного кода (Хаффман) ?
Пытаюсь реализовать алгоритм Хаффмана, который будет сжимать текстовый файл. Уже построено дерево...

Хаффман и не правильное разархивирование
Я уже долго работаю с кодировкой методом Хаффмана...сделано много(для меня), и вот: он уже строит...

10
30.03.2012, 10:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2012, 10:30
Помогаю со студенческими работами здесь

Хаффман
Реализация и описание метода Хаффмана

Хаффман и LZW
Приветствую,вас форумчане! Нужны алгоритмы Хаффмана и LZW на Delphi. Не хочу что бы кто-то...

Хаффман проблема кодирования
Доброго времени суток! Есть задача закодировать изображение по алгоритму Хаффмана, так называемое...

Получение бинарного кода, Хаффман
Доброго времени суток, работаю с алгоритмом Хаффмана(работаю со строкой &quot;Мама мыла лапу ламы&quot;) Так...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru