⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wordcompressor.h

📁 该程序用VC实现了一个小型文件压缩与解压缩功能的程序
💻 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 + -