Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <queue>
- using namespace std;
- struct MinHeapNode {
- char data;
- unsigned freq;
- MinHeapNode *left, *right;
- MinHeapNode(char data, unsigned freq)
- {
- left = right = NULL;
- this->data = data;
- this->freq = freq;
- }
- };
- void HuffmanCodes(char data[], int freq[], int size)
- {
- for (int i=0; i<size; i++)
- {
- // add element
- }
- }
- int main(int argc, char *argv[])
- {
- cout << "\n\n";
- // variables
- char letter;
- char arr_c[10000] = {};
- int arr_i[10000] = {};
- int size = 0;
- // error
- if (argc != 2)
- {
- cout << "Error\n\n\n";
- return 0;
- }
- // input file
- ifstream file(argv[1]);
- // file doesnt exist
- if (!file)
- {
- cout << "Unable to open input file\n\n\n";
- return 0;
- }
- // input
- while (file >> letter)
- {
- cout << letter;
- for (int i=0; i<10000; i++)
- {
- if (arr_c[i] == letter)
- {
- arr_i[i]++;
- break;
- }
- else if (arr_c[i] == 0)
- {
- arr_c[i] = letter;
- arr_i[i] = 1;
- size++;
- break;
- }
- }
- }
- // sort
- for (int i=0; i<size; i++)
- {
- int index = i;
- for (int j=i; j<size; j++)
- {
- if (arr_i[j] > arr_i[index])
- {
- index = j;
- }
- }
- int temp1 = arr_c[i];
- int temp2 = arr_i[i];
- arr_c[i] = arr_c[index];
- arr_i[i] = arr_i[index];
- arr_c[index] = temp1;
- arr_i[index] = temp2;
- }
- // print
- cout << endl << endl;
- for (int i=0; i<size; i++)
- {
- cout << arr_c[i] << " " << arr_i[i] << endl;
- }
- HuffmanCodes(arr_c, arr_i, size);
- cout << endl << "size : " << size << endl;
- file.close();
- cout << "\n\n\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement