资源简介
信息论课程设计,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语言源码 课程设计专
- MFC课程设计学生管理系统
- vc++课程设计 让计算机来猜测用户“暗
- 职工工作量统计系统.rar
- 扫雷游戏.cpp C++ 课程设计
- C语言数据结构课程设计之统计C程序单
- 职工信息管理系统C 链表
- C++课程设计 扑克牌游戏内含2程序
- 学生成绩管理系统 (C语言版)课程设
- C语言实现LZW编码
- 软件工程课程设计--自动排课排课系统
- 数据结构课程设计 停车场管理系统
- 操作系统课程设计(生产者-消费者存
- C++ 日程管理软件 课程设计
- 小型公司工资管理系统设计.rar
- 单片机交通灯课程设计.zip
- 课程设计--C语言学生成绩管理系统内
- c++大学课程设计——家教信息系统
- C++课程设计五子棋基于Qt4
- 广东某工业大学的openGL课程设计
- 简易防火墙使用C++与Qt4.5带源代码
- 数据库课程设计 - 汽车租借信息系统
- VC++课程设计 计算器
- C++花店销售管理系统源码及文档
- MFC课程设计VC++超市管理系统
- C++ 实用小程序与多个课程设计收集适
- 基于SDL的贪吃蛇游戏
- 数据结构课程设计,C++计算器MFC
- C语言 员工考勤系统 课程设计 源文件
- C++课程设设计 员工信息管理系统
评论
共有 条评论