Приведенный ниже код должен взять файл TXT и сжать в файл bin. Затем, если он будет предложен, он должен занять тот же двоичный файл и распаковать его в другой файл TXT. < /P>
В этом коде используется алгоритм кодирования Хаффмана для сжатия. Я пробовал сжатие, которое работало нормально, но декомпрессия не работает должным образом.#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct TreeNode
{
char data;
unsigned int freq;
TreeNode *right, *left;
TreeNode(char d, unsigned int f)
{
data = d;
freq = f;
right = nullptr;
left = nullptr;
}
};
struct CompareNodes
{
bool operator()(TreeNode *left, TreeNode *right)
{
return left->freq > right->freq;
}
};
class Solution
{
private:
void deleteTree(TreeNode *node)
{
if (node == nullptr)
return;
deleteTree(node->left);
deleteTree(node->right);
delete node;
}
unordered_map loadFile(const string &filename)
{
unordered_map freq;
ifstream file(filename, ios::binary);
if (!file.is_open())
{
cout right)
{
codeMaps[node->data] = currentString.empty() ? "0" : currentString;
return;
}
generateCodes(node->left, currentString + '0', codeMaps);
generateCodes(node->right, currentString + '1', codeMaps);
}
public:
void compress(const string &filename, const string &outputFile)
{
unordered_map mp = loadFile(filename);
if (mp.empty())
{
cout left = single;
newRoot->right = nullptr;
minHeap.pop();
minHeap.push(newRoot);
}
while (minHeap.size() > 1)
{
TreeNode *l = minHeap.top();
minHeap.pop();
TreeNode *r = minHeap.top();
minHeap.pop();
TreeNode *newNode = new TreeNode('\0', l->freq + r->freq);
newNode->left = l;
newNode->right = r;
minHeap.push(newNode);
}
TreeNode *root = minHeap.top();
unordered_map codeMaps;
generateCodes(root, "", codeMaps);
long long total_chars = 0;
for (const auto &pair : mp)
{
total_chars += pair.second;
}
ofstream outFile(outputFile, ios::binary);
if (!outFile.is_open())
{
cout
Подробнее здесь: https://stackoverflow.com/questions/797 ... my-project
У меня проблемы с декомпрессионной частью моего проекта [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1758383418
Anonymous
Приведенный ниже код должен взять файл TXT и сжать в файл bin. Затем, если он будет предложен, он должен занять тот же двоичный файл и распаковать его в другой файл TXT. < /P>
В этом коде используется алгоритм кодирования Хаффмана для сжатия. Я пробовал сжатие, которое работало нормально, но декомпрессия не работает должным образом.#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct TreeNode
{
char data;
unsigned int freq;
TreeNode *right, *left;
TreeNode(char d, unsigned int f)
{
data = d;
freq = f;
right = nullptr;
left = nullptr;
}
};
struct CompareNodes
{
bool operator()(TreeNode *left, TreeNode *right)
{
return left->freq > right->freq;
}
};
class Solution
{
private:
void deleteTree(TreeNode *node)
{
if (node == nullptr)
return;
deleteTree(node->left);
deleteTree(node->right);
delete node;
}
unordered_map loadFile(const string &filename)
{
unordered_map freq;
ifstream file(filename, ios::binary);
if (!file.is_open())
{
cout right)
{
codeMaps[node->data] = currentString.empty() ? "0" : currentString;
return;
}
generateCodes(node->left, currentString + '0', codeMaps);
generateCodes(node->right, currentString + '1', codeMaps);
}
public:
void compress(const string &filename, const string &outputFile)
{
unordered_map mp = loadFile(filename);
if (mp.empty())
{
cout left = single;
newRoot->right = nullptr;
minHeap.pop();
minHeap.push(newRoot);
}
while (minHeap.size() > 1)
{
TreeNode *l = minHeap.top();
minHeap.pop();
TreeNode *r = minHeap.top();
minHeap.pop();
TreeNode *newNode = new TreeNode('\0', l->freq + r->freq);
newNode->left = l;
newNode->right = r;
minHeap.push(newNode);
}
TreeNode *root = minHeap.top();
unordered_map codeMaps;
generateCodes(root, "", codeMaps);
long long total_chars = 0;
for (const auto &pair : mp)
{
total_chars += pair.second;
}
ofstream outFile(outputFile, ios::binary);
if (!outFile.is_open())
{
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79770394/i-am-having-problem-with-decompression-part-of-my-project[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия