📄 wordcompressor.h
字号:
#ifndef WordCompressor_H
#define WordCompressor_H
#include"BinaryTree.h"
#include<iomanip.h>
#include<stdlib.h>
#include<fstream.h>
#include"HashTable.h"
char ch1[100];int freq[100];int mm;
#include"chNode.h"
#include<iostream.h>
template<class T>
class WordCompressor
{
private:
BinaryTree<T> Tree;
public:
WordCompressor(char ch[],int Freq[],int m);
~WordCompressor(){}
void Application();
void Instructions();
void CreatHuffmanTree(char q[],int f[],int n);
};
template<class T>
WordCompressor<T>::WordCompressor(char ch[],int Freq[],int m)
{
CreatHuffmanTree (ch,Freq,m);
for(int i=0;i<m;i++)
{
ch1[i]=ch[i];freq[i]=Freq[i];mm=m;
}
}
template<class T>
void WordCompressor<T>::Instructions()
{
cout<<"*************欢迎使用文本压缩器************"<<endl
<<setw(50)<<"[1] 将文本写入文件中 "<<endl
<<setw(50)<<"[2] 统计字符频度 "<<endl
<<setw(50)<<"[3] 编码Coding(直接打开words.txt文件) "<<endl
<<setw(50)<<"[4] 解码Decoding "<<endl
<<setw(50)<<"[5] 打印哈夫曼树 "<<endl
<<setw(50)<<"[6] 退出Exit "<<endl
<<setw(30)<<"*********************************************"<<endl;
}
template<class T>
void WordCompressor<T>::CreatHuffmanTree(char q[],int f[],int m)
{
BinaryTree<T> Tree2;
Tree.HuffmanTree(q,f,m,Tree);
}
template<class T>
void WordCompressor<T>::Application()
{
int item;int i=0;
ofstream fout;
cout<<"请输入功能标号:"<<endl;
cin>>item;
while(1){
switch(item){
case 1:
cout<<"请输入文件名,建议(words.txt): ";
cin.ignore();
char file2[30];
cin.getline(file2,30);
cout<<"请输入文本内容,以#结束:"<<endl;
fout.open(file2);
if(!fout)
{
cout<<"The file can not open!"<<endl;
exit(1);
}
char ch;
cin.get(ch);
while(ch!='#'){
fout<<ch;
cin.get(ch);
}
cout<<endl<<endl;
cout<<"您已经成功把文本存入文件words.txt中!"<<endl;
fout.close();
cout<<endl;
break;
case 2:
cin.ignore();
cout<<"文本中出现的字符和频度如下:"<<endl;
cout<<"字符:"<<" "<<"频度:"<<endl;
for( i=0;i<mm;i++)
cout<<ch1[i]<<" "<<freq[i]<<endl;
break;
case 3:
cout<<"请输入你要编码的文件名: ";
cin.ignore();
char file[30];
cin.getline(file,30);
Tree.Coding(file,"words-coding.txt",Tree);
cout<<"您已经成功将文件编码,并写入文件“words-coding.txt”中!"<<endl;
break;
case 4:
cout<<"请输入你要解码的文件名: ";
cin.ignore();
char file1[30];
cin.getline(file1,30);
Tree.Decoding(file1,"Decoding_Words.txt",Tree);
cout<<"您已经成功将文件解码,并写入文件“Decoding_Words.txt”中!"<<endl;
break;
case 5:
cin.ignore();
cout<<"逆时针旋转90度打印哈夫曼树为:"<<endl;
Tree.PrintTree(Tree.GetRoot(),0);
break;
case 6:
exit(1);
default:cout<<"您输入的功能标号错误!"<<endl<<endl;
}
cin.ignore();
if(item == 1 || item == 2 || item ==3 || item ==4 || item ==5)
break;
else{
cout<<"请重新输入功能标号: ";
cin>>item;
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -