资源简介
信息论课程设计,LZW编码方案,C++实现LZW编码。使用txt文本保存和输入输出。

代码片段和文件信息
#include
#include
#include
#include
using namespace std;
ofstream output(“out1.txt“ ios::out);
ifstream input(“in1.txt“ ios::in);
string dic[30];
int n;
int find(string s) //字典中寻找返回序号
{
int temp = -1;
for (int i = 0; i<30; i++)
{
if (dic[i] == s)
temp = i + 1;
}
return temp;
}
void init() //字典初始
{
dic[0] = “a“; //开始时词典包含所有可能的根
dic[1] = “b“;
dic[2] = “c“;
dic[3] = “d“;
for (int i = 4; i<30; i++) //其余为空
{
dic[i] = ““;
}
}
void code(string str)
{
init(); //初始化
char temp[2];
temp[0] = str[0]; //取第一个字符
temp[1] = ‘\0‘;
string P = temp; //P为前缀
int i = 1;
int j = 4; //目前字典存储的最后一个位置
cout << “编码后的码字为:“;
output << “编码后的码字为:“;
while (1)
{
char t[2];
t[0] = str[i]; //取下一字符
t[1] = ‘\0‘;
string C = t; //C为字符流中下一个字符
if (C == ““) //无码字要译,结束
{
cout << “ “ << find(P);//输出代表当前前缀的码字
output << “ “ << find(P);
break;
} //退出循环编码结束
if (find(P + C)>-1) //有码字要译,如果P+C在词典中,则用C扩展P,进行下一步;
{
P = P + C;
i++;
}
else//如果P+C不在词典中,则将P+C添加到词典中,令P:=C
{
cout << “ “ << find(P);
output << “ “ << find(P);
string PC = P + C;
dic[j++] = PC;
P = C;
i++;
}
}
cout << endl;
output << endl;
cout << “生成的词典为:“ << endl;
output << “生成的词典为:“ << endl;
for (i = 0; i {
cout << setw(12) << i + 1 << setw(12) << dic[i] << endl;
output << setw(12) << i + 1 << setw(12) << dic[i] << endl;
}
cout << endl;
output << endl;
system(“pause“);
}
void decode(int c[])
{
init(); //译码词典与编码词典相同,将abc设为初始的前缀
int pw cw; //pw:先前码字,cw:当前码字
cw = c[0]; //输入码字流的第一个码字,赋给当前码字
int j = 3 i;
cout << “译码为:“;
output << “译码为:“;
cout << dic[cw - 1]; //输出当前字符串到字符流
output << dic[cw - 1];
for (int m = 0; m {
pw = cw; //当前码字赋给先前码字
cw = c[m + 1];
if (cw <= j + 1) //若当前码字在词典中
{
cout << dic[cw - 1];//输出当前码字锁代表的字符串
output << dic[cw - 1];
char t[2];
t[0] = dic[cw - 1][0];
t[1] = ‘\0‘;
string k = t;
j++;
dic[j] = dic[pw - 1] + k; //将先前码字与当前码字所代表的字符串的首字符连接而成的字符串添加到词典中
}
else //若当前码字不在词典中
{
char t[2];
t[0] = dic[pw - 1][0];
t[1] = ‘\0‘;
string k = t;
j++;
dic[j] = dic[pw - 1] + k; //将先前码字与当前码字所代表的字符串的首字符连接而成的字符串添加到词典中
cout << dic[cw - 1]; //输出该字符串
output << dic[cw - 1];
}
}
cout << endl;
output << endl;
cout << “生成的词典为:“ << endl;
output << “生成的词典为:“ << endl;
for (i = 0; i {
cout << setw(12) << i + 1 << setw(12) << dic[i] << endl;
output << setw(12) << i + 1 << setw(12) << dic[i] << endl;
}
cout << endl;
output << endl;
system(“pause“);
}
int main()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-21 12:16 .vs\
目录 0 2018-01-21 12:16 .vs\LZWYXD\
目录 0 2018-01-21 12:16 .vs\LZWYXD\v14\
文件 23040 2018-01-14 14:20 .vs\LZWYXD\v14\.suo
目录 0 2018-01-21 12:16 Debug\
文件 134656 2018-01-05 19:49 Debug\LZWYXD.exe
文件 643788 2018-01-05 19:49 Debug\LZWYXD.ilk
文件 1110016 2018-01-05 19:49 Debug\LZWYXD.pdb
文件 1300 2018-01-05 19:48 LZWYXD.sln
文件 8597504 2018-01-14 14:20 LZWYXD.VC.db
目录 0 2018-01-21 12:16 LZWYXD\
目录 0 2018-01-21 12:16 LZWYXD\Debug\
文件 197 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.log
目录 0 2018-01-21 12:16 LZWYXD\Debug\LZWYXD.tlog\
文件 662 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\CL.command.1.tlog
文件 10292 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\CL.read.1.tlog
文件 504 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\CL.write.1.tlog
文件 1178 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\li
文件 2708 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\li
文件 488 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\li
文件 214 2018-01-05 19:49 LZWYXD\Debug\LZWYXD.tlog\LZWYXD.lastbuildstate
文件 347136 2018-01-05 19:49 LZWYXD\Debug\vc140.idb
文件 462848 2018-01-05 19:49 LZWYXD\Debug\vc140.pdb
文件 391267 2018-01-05 19:49 LZWYXD\Debug\婧?obj
文件 80 2018-01-05 15:34 LZWYXD\in2.txt
文件 7375 2018-01-05 19:48 LZWYXD\LZWYXD.vcxproj
文件 944 2018-01-05 19:48 LZWYXD\LZWYXD.vcxproj.filters
文件 0 2018-01-14 14:16 LZWYXD\out1.txt
文件 0 2018-01-14 14:12 LZWYXD\out2.txt
文件 4006 2018-01-05 19:48 LZWYXD\婧?cpp
- 上一篇:警察抓小偷C代码
- 下一篇:可以将C语言转变为汇编的编译器
相关资源
- C语言课程设计
- c语言电子商务系统
- 宠物管理系统课程设计(源码+数据库
- c语言课程设计:客房登记系统源码
- 8位竞赛抢答器的课程设计报告.docx
- VC++MFC课程设计的学生成绩管理系统
- C++实现21点游戏
- c++课程设计学生管理系统浙工大源码
- 课程设计: MFC 学生信息管理系统
- dsp课程设计——语音加密.zip
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- c++课程设计宾馆客房管理系统
- c语言课程设计-职工信息管理系统-单
- 飞机票订购系统C语言课程设计报告全
- c++ 课程设计_中国象棋
- 编译原理课程设计-C语言子集编译器
- 操作系统课程设计(银行家算法)附
- 用c写的航空订票系统 航班信息改变
- 人员管理系统 c语言源码 课程设计专
- MFC课程设计学生管理系统
- vc++课程设计 让计算机来猜测用户“暗
- 职工工作量统计系统.rar
- 扫雷游戏.cpp C++ 课程设计
- C语言数据结构课程设计之统计C程序单
- 职工信息管理系统C 链表
- C++课程设计 扑克牌游戏内含2程序
- 学生成绩管理系统 (C语言版)课程设
- C语言实现LZW编码
- 软件工程课程设计--自动排课排课系统
评论
共有 条评论