多媒体实验报告

合集下载

多媒体课程实验报告

多媒体课程实验报告

一、实验背景与目的随着信息技术的飞速发展,多媒体技术在教育领域的应用越来越广泛。

为了提高教学效果,培养学生的创新能力和实践能力,我校开设了多媒体课程。

本次实验旨在通过实际操作,使学生了解多媒体制作的基本流程,掌握常用多媒体制作软件的使用方法,并能够独立完成一个简单多媒体作品的制作。

二、实验内容与步骤1. 实验内容本次实验以“制作一个简单的多媒体课件”为主题,要求学生运用所学知识,制作一个包含文字、图片、音频、视频等多媒体元素的作品。

2. 实验步骤(1)确定课件主题首先,学生需要确定课件的主题,以便在后续制作过程中围绕主题展开。

(2)收集素材根据主题,学生需要收集相关的文字、图片、音频、视频等素材。

素材来源可以包括网络、图书馆、教材等。

(3)选择制作软件根据素材类型和制作需求,选择合适的制作软件。

常用的多媒体制作软件有PowerPoint、Flash、Authorware等。

(4)制作课件按照以下步骤制作课件:①新建一个项目,设置页面大小、背景等基本参数。

②添加文字内容,设置字体、字号、颜色等。

③插入图片,调整图片大小、位置等。

④添加音频、视频等元素,设置播放时间、位置等。

⑤调整动画效果,使课件更具吸引力。

⑥预览并修改,确保课件内容完整、流畅。

(5)打包与发布将制作好的课件打包,生成可执行文件或网页文件,以便在课堂或网络环境下展示。

三、实验结果与分析1. 实验结果通过本次实验,学生掌握了多媒体制作的基本流程,学会了使用PowerPoint软件制作课件,并独立完成了一个简单多媒体作品的制作。

2. 实验分析(1)实验过程中,学生学会了如何根据主题收集素材,提高了信息检索能力。

(2)在制作课件的过程中,学生学会了运用多媒体元素,丰富了教学内容,提高了教学效果。

(3)通过实际操作,学生提高了自己的动手能力,培养了创新思维。

(4)实验过程中,学生遇到了一些问题,如素材版权、软件操作等,通过查阅资料、请教老师等方式解决了问题,提高了自主学习能力。

多媒体音频实验报告

多媒体音频实验报告

一、实验目的本次实验旨在让学生掌握音频信号的采集、处理与编辑技术,了解音频文件的基本格式和音频编辑软件的使用方法。

通过实验,提高学生对多媒体音频处理技术的认识和应用能力。

二、实验原理音频信号是一种模拟信号,通过模拟到数字的转换(A/D转换)可以将音频信号数字化,然后利用计算机进行处理和编辑。

音频编辑软件可以对音频信号进行剪辑、合并、混音、降噪等操作,以满足不同的应用需求。

三、实验器材1. 电脑一台(配置要求:奔腾4以上处理器,2GB内存,声卡,显卡,Windows操作系统)2. 音频采集设备(如麦克风、耳机等)3. 音频编辑软件(如Audacity、Adobe Audition等)四、实验步骤1. 音频采集(1)将麦克风连接到电脑的声卡接口。

(2)打开音频编辑软件,选择“录音”功能。

(3)调整麦克风灵敏度,确保录音效果清晰。

(4)开始录音,录制一段音频。

(5)保存录音文件。

2. 音频编辑(1)打开音频编辑软件,导入录制好的音频文件。

(2)对音频进行剪辑,删除不需要的部分。

(3)合并多个音频文件,制作混音效果。

(4)添加音效,如背景音乐、音效等。

(5)调整音频参数,如音量、音调、音色等。

(6)保存编辑好的音频文件。

3. 音频格式转换(1)打开音频编辑软件,导入需要转换格式的音频文件。

(2)选择“导出”功能,设置输出格式、编码参数等。

(3)保存转换后的音频文件。

五、实验结果与分析1. 成功录制了一段音频,并保存为WAV格式。

2. 对音频进行剪辑、合并、混音等操作,制作了一首简单的歌曲。

3. 将歌曲转换为MP3格式,以便在手机、MP3播放器等设备上播放。

4. 通过实验,掌握了音频采集、编辑和格式转换的基本方法。

六、实验体会1. 实验过程中,学习了音频信号的基本知识,了解了音频编辑软件的使用方法。

2. 通过实际操作,提高了音频处理技术的能力。

3. 深入了解了音频文件的基本格式,为以后的学习和工作打下了基础。

多媒体技术案例实验报告

多媒体技术案例实验报告

一、实验背景随着计算机技术的飞速发展,多媒体技术已经成为现代信息传播、处理和存储的重要手段。

为了提高学生对多媒体技术的理解和应用能力,本次实验选择了《多媒体技术》课程中的经典案例进行实验操作,旨在通过实际操作,加深对多媒体技术原理和方法的认识。

二、实验目的1. 了解多媒体技术的基本概念、组成和特点。

2. 掌握多媒体素材的采集、编辑和加工处理方法。

3. 熟悉常用多媒体制作软件的使用。

4. 提高多媒体作品的创作能力。

三、实验内容1. 多媒体素材采集(1)实验目的:了解多媒体素材采集的方法和工具。

(2)实验步骤:① 使用数码相机拍摄图片素材;② 使用麦克风录制音频素材;③ 使用摄像机录制视频素材。

2. 多媒体素材编辑(1)实验目的:掌握常用多媒体编辑软件的使用方法。

(2)实验步骤:① 使用Photoshop编辑图片素材,进行图像处理、特效添加等操作;② 使用Audacity编辑音频素材,进行音频剪辑、降噪、混音等操作;③ 使用Premiere编辑视频素材,进行视频剪辑、特效添加、音频与视频同步等操作。

3. 多媒体作品制作(1)实验目的:提高多媒体作品的创作能力。

(2)实验步骤:① 设计多媒体作品的主题和风格;② 选择合适的素材和工具;③ 进行多媒体素材的采集、编辑和加工处理;④ 将素材整合到多媒体作品中,完成作品的创作。

四、实验结果与分析1. 实验结果本次实验共完成3个多媒体作品,分别为图片作品、音频作品和视频作品。

作品内容分别为:风景照片、音乐作品和视频短片。

2. 实验分析(1)图片作品:通过Photoshop编辑,对风景照片进行了裁剪、调整亮度、对比度、饱和度等操作,使图片更加美观。

同时,添加了特效,使作品更具吸引力。

(2)音频作品:通过Audacity编辑,对音乐素材进行了剪辑、降噪、混音等操作,使音乐作品更具专业效果。

(3)视频作品:通过Premiere编辑,对视频素材进行了剪辑、特效添加、音频与视频同步等操作,使视频短片更具观赏性。

多媒体实验报告

多媒体实验报告

SetIcon(m_hIcon, FALSE);
// Set small icon
// TODO: Add extra initialization here m_Ready=FALSE; m_PSign=FALSE; //初始化正在播放标识 m_ASign=FALSE; //初始化正在暂停标识 m_MCIDeviceID=0; //初始化设备标识
}
m_PSign=true;//设置正在播放标识为 TRUE
m_ASign=false;
SetDlgItemText(IDC_BUTTON_PLAYORPAUSE,"暂停");
GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(true);
MCI_STATUS_PARMS statusParms;
// Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
// The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CPlayDlg::OnQueryDragIcon() {
void CPlayDlg::OnButtonPlayorpause() {
// TODO: Add your control notification handler code here if(m_Ready){//文件准备好
if(!m_PSign)//没有音乐播放时 OnButtonPlay();
// Set the icon for this dialog. The framework does this automatically

多媒体技术应用实验报告

多媒体技术应用实验报告

一、实验背景随着信息技术的飞速发展,多媒体技术已成为现代生活中不可或缺的一部分。

多媒体技术是将文本、图像、音频、视频等多种信息载体集成在一起,通过计算机技术进行处理、存储、传输和展示的一种技术。

为了更好地理解和掌握多媒体技术,我们开展了此次实验。

二、实验目的1. 了解多媒体技术的基本概念和组成要素;2. 掌握多媒体制作工具的使用方法;3. 熟悉多媒体文件格式及其特点;4. 学会使用多媒体技术进行简单的多媒体作品制作。

三、实验内容1. 多媒体制作工具的使用(1)文字处理软件(如Microsoft Word)实验步骤:① 打开Microsoft Word,创建一个新的文档;② 输入文字内容,设置字体、字号、颜色等格式;③ 添加图片、表格等元素,调整其位置和大小;④ 保存文档。

(2)图像处理软件(如Photoshop)实验步骤:① 打开Photoshop,创建一个新的图像文件;② 使用各种工具对图像进行编辑,如调整亮度、对比度、色彩饱和度等;③ 使用图层功能对图像进行合成;④ 保存图像文件。

(3)音频处理软件(如Audacity)实验步骤:① 打开Audacity,导入音频文件;② 使用各种工具对音频进行编辑,如剪切、复制、粘贴、添加效果等;③ 保存音频文件。

(4)视频处理软件(如Adobe Premiere Pro)实验步骤:① 打开Adobe Premiere Pro,导入视频文件;② 使用各种工具对视频进行剪辑、调整画面、添加转场效果等;③ 保存视频文件。

2. 多媒体文件格式及特点(1)文本格式:如TXT、DOC等,适用于文字内容的存储和传输;(2)图像格式:如JPG、PNG等,适用于图像内容的存储和传输;(3)音频格式:如MP3、WAV等,适用于音频内容的存储和传输;(4)视频格式:如AVI、MP4等,适用于视频内容的存储和传输。

3. 多媒体作品制作(1)设计多媒体作品主题和内容;(2)根据主题选择合适的制作工具;(3)收集和整理所需素材;(4)按照设计要求进行多媒体作品制作;(5)对作品进行测试和修改,直至达到预期效果。

多媒体教学实验报告

多媒体教学实验报告

一、实验背景随着科技的不断发展,多媒体技术在教育领域的应用越来越广泛。

为了探究多媒体教学对教学效果的影响,提高教学质量和学生的学习兴趣,我们开展了一项多媒体教学实验。

本次实验旨在验证多媒体教学在课堂中的应用效果,分析多媒体教学与传统教学在学生成绩、学习兴趣、课堂参与度等方面的差异。

二、实验目的1. 验证多媒体教学对提高学生成绩的影响;2. 分析多媒体教学与传统教学在激发学生学习兴趣方面的差异;3. 探讨多媒体教学对学生课堂参与度的影响;4. 总结多媒体教学的优缺点,为实际教学提供参考。

三、实验方法1. 实验对象:选择某中学高一年级两个班级作为实验组和对照组,共80名学生。

2. 实验分组:将实验组分为A、B两个小班,每个小班40名学生;对照组分为C、D两个小班,每个小班40名学生。

3. 实验内容:以语文课程为例,实验组采用多媒体教学,对照组采用传统教学。

4. 实验过程:a. 教师对实验组和对照组进行相同的课程准备;b. 实验组教师运用多媒体技术进行授课,对照组教师采用传统教学方法;c. 对实验组和对照组学生进行测试,包括课堂表现、作业完成情况、考试成绩等;d. 对实验数据进行统计分析。

四、实验结果与分析1. 学生成绩对比:通过对实验组和对照组学生的考试成绩进行分析,发现实验组学生的平均成绩高于对照组,说明多媒体教学对提高学生成绩具有显著效果。

2. 学习兴趣对比:通过问卷调查和课堂观察,发现实验组学生对多媒体教学的兴趣明显高于对照组。

实验组学生在课堂上积极参与,提出问题,与教师互动,表现出较高的学习热情。

3. 课堂参与度对比:实验组学生在课堂上的参与度高于对照组。

实验组学生在多媒体教学环境下,通过观看视频、动画、图片等多种形式,更加容易理解和掌握知识,从而提高课堂参与度。

4. 实验结论:a. 多媒体教学有助于提高学生成绩;b. 多媒体教学能激发学生学习兴趣,提高课堂参与度;c. 多媒体教学具有较好的教学效果,但需注意合理运用,避免过度依赖。

多媒体合成实验报告

多媒体合成实验报告

一、实验背景随着信息技术的飞速发展,多媒体技术已经成为现代教育、娱乐、商业等领域的重要手段。

多媒体合成技术是将不同类型的信息(如图像、音频、视频等)进行整合,以实现更加丰富、生动、直观的表达效果。

本次实验旨在通过实践操作,了解多媒体合成的基本原理和操作方法,提高学生的多媒体制作能力。

二、实验目的1. 熟悉多媒体合成软件的基本操作。

2. 掌握音频、视频、图像等多媒体元素的导入、编辑和合成方法。

3. 学会运用多媒体合成技术制作简单的多媒体作品。

三、实验内容1. 实验环境操作系统:Windows 10软件:Adobe Premiere Pro CC 20192. 实验步骤(1)音频合成① 导入音频文件:在Premiere Pro中,选择“文件”→“导入”→“音频”,选择需要导入的音频文件,点击“导入”按钮。

② 音频剪辑:选中导入的音频文件,在“时间线”窗口中,通过调整“播放头”位置,找到需要剪辑的起始点,按住鼠标左键拖动到终点,释放鼠标,完成音频剪辑。

③ 音频混合:在“时间线”窗口中,将剪辑好的音频拖动到相应的视频轨道上,调整音频的音量大小,实现音频混合。

(2)视频合成① 导入视频文件:选择“文件”→“导入”→“视频”,选择需要导入的视频文件,点击“导入”按钮。

② 视频剪辑:在“时间线”窗口中,选中导入的视频文件,通过调整“播放头”位置,找到需要剪辑的起始点,按住鼠标左键拖动到终点,释放鼠标,完成视频剪辑。

③ 视频过渡:在“效果”面板中,找到“视频切换”效果,拖动到“时间线”窗口中,调整视频过渡效果的时间长度和样式。

④ 视频合成:将剪辑好的视频和音频拖动到相应的轨道上,调整视频和音频的播放顺序,实现视频合成。

(3)图像合成① 导入图像文件:选择“文件”→“导入”→“图像”,选择需要导入的图像文件,点击“导入”按钮。

② 图像剪辑:在“时间线”窗口中,选中导入的图像文件,通过调整“播放头”位置,找到需要剪辑的起始点,按住鼠标左键拖动到终点,释放鼠标,完成图像剪辑。

多媒体的实验报告

多媒体的实验报告

实验名称:多媒体技术综合应用实验实验时间:2023年X月X日实验地点:计算机实验室一、实验目的1. 熟悉多媒体技术的概念和基本原理。

2. 掌握多媒体制作软件的使用方法。

3. 学会利用多媒体技术进行信息表达和传播。

4. 培养团队协作和创新能力。

二、实验内容1. 多媒体技术基本原理的学习2. 多媒体制作软件(如Adobe Premiere、Photoshop等)的使用3. 多媒体作品的制作与展示三、实验步骤1. 多媒体技术基本原理的学习(1)了解多媒体技术的定义、发展历程和应用领域。

(2)学习多媒体技术的基本原理,如数字化、多媒体格式、音频处理、视频处理等。

2. 多媒体制作软件的使用(1)安装并熟悉Adobe Premiere、Photoshop等软件的操作界面。

(2)学习视频剪辑、音频编辑、图像处理等基本操作。

(3)尝试制作简单的多媒体作品,如视频、音频、图片等。

3. 多媒体作品的制作与展示(1)分组讨论,确定多媒体作品的主题和内容。

(2)分工合作,利用所学知识制作多媒体作品。

(3)作品完成后,进行展示和交流,互相评价和改进。

四、实验结果与分析1. 实验结果本次实验,我们成功学习了多媒体技术的基本原理,掌握了Adobe Premiere、Photoshop等软件的使用方法,并制作出具有创意的多媒体作品。

2. 实验分析(1)多媒体技术具有广泛的应用领域,如教育、娱乐、广告等。

通过本次实验,我们认识到多媒体技术在现代社会的重要性。

(2)多媒体制作软件的功能丰富,操作简便。

在实验过程中,我们学会了如何运用这些软件进行创作,提高了自己的动手能力。

(3)团队协作在多媒体作品的制作过程中至关重要。

通过本次实验,我们学会了如何与他人沟通、分工合作,培养了团队精神。

五、实验总结1. 通过本次实验,我们深入了解了多媒体技术的概念、原理和应用,为今后从事相关领域的工作打下了基础。

2. 在实验过程中,我们掌握了多媒体制作软件的使用方法,提高了自己的实践能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验项目名称:声音录制、处理及MIDI音乐制作Array实验日期:2011.12.6 实验室:5205试验台号:同组者:一、实验目的本实验旨在加深学生对声音的数字化原理及过程理解,了解计算机处理和存储声音方式,了解WAVE、MIDI和MP3声音数据文件的差别和用法,了解制作简单MIDI音乐方法,掌握几种常用声音处理工具软件的用法,掌握录音、编辑声音、制作MP3格式声音的方法。

二、主要软件与硬件(1) 带有声卡、麦克风、音响(或耳机)和光驱的MPC(2) Windows 2000操作系统,自带声音工具“音量控制”和“录音机”。

(3) 声音处理软件Cool Edit Pro三、实验原理模拟声音三要素,即音高、音色和音强。

数字波形声音技术指标主要包括:采样频率、量化位数和编码算法等。

根据这些技术指标我们把数字波形声音分为五个等级:电话音质、AM音质、FM音质、CD音质和数字录音带。

MP3是MPEG声音层3(Layer3)压缩标准,可以“无失真”的将WAVE文件压缩到原来大小的1/12。

MIDI(musical instrument digital interface,电子乐器数字接口)是计算机特有的数字音乐格式,播放MIDI乐曲需要音乐合成器,合成器合成声音的方法有两种:FM合成法和波表合成法。

MIDI文件的特点有:文件小、易编辑、可以做背景音乐。

四、实验要求1、使用录音软件把10秒钟CD音乐录制成CD音质(44.1kHz、16位、双声道、PCM)的WAVE文件。

2、练习使用Cool Edit Pro,尝试它的各项功能。

制作一段声音文件(作为实验一中设计的数字电视图像伴音文件),这段声音必须既有音乐,又有自己录制的话语,并存为无压缩的WAVE文件。

3、把前一步制作的WAVE声音转换成MP3格式,比较两种格式声音文件的数据量和试听效果。

五、实验条件带有声卡、麦克风、音响(或耳机)和光驱的MPC、Windows XP操作系统,自带声音工具“音量控制”和“录音机”、声音处理软件Cool Edit Pro、一张CD唱盘。

六、实验步骤1.打开cool edit pro 软件:2.点击录音按钮,开始录音,首先在轨道1上录一段音,再在轨道2上录一段音,如图:…3.在文件里选“混缩另存为”,将文件保存为后缀为.wav的文件即可。

总结:经过这次实验,我初步接触了cool edit pro 软件,对音频的制作也有了初步的了解;懂得了音频格式的转换。

.思考题1、如何对不同格式的音频文件进行格式转换。

答:1、打开cool edit pro 软件;2、点击文件菜单下的打开工程选项;3、在软件里打开文件后,再点击文件将文件另存为想要转换的格式即可。

实验项目名称:图像处理及编辑Array实验日期:2011.12. 实验室:5205试验台号:同组者:一、实验目的本实验旨在加深学生对数字图像有关知识的理解,增进对多媒体图像的认识和体会。

掌握数字图像处理中经常用到的基本概念和名词,掌握数字图像处理的基本技能,学习使用图像处理软件Photoshop编辑和处理图像。

二、主要软、硬件(1) MPC,若有条件,则最好配有扫描仪和数字相机。

(2) Windows 2000操作系统。

(3) 图像处理软件Photoshop 6.0。

三、实验原理色调、亮度和饱和度是人的眼睛对客观存在的颜色主观感受的结果。

在计算机产生图形的过程中,计算机显示器通过将不同比例的红色、绿色和蓝色的光波进行混合,构成显示图形上不同颜色,这是一个典型的加色过程。

计算机中常用的色彩空间有:RGB色彩空间、CMYK色彩空间、YCrCb色彩空间等。

数字图像有两类:矢量图与位图,位图图像的基本属性有图像分辨率和图像深度。

数字图像文件有多种存储格式,如BMP、TIFF、GIF、JPG、PNG等,掌握这些图像文件格式的特点及采用的压缩算法。

四、实验要求1、从多种途径搜集制作网页的原始图片。

2、根据网页制作规划中的内容,使用Photoshop对原始图片进行编辑处理,使之符合网页制作要求。

3、使用Photoshop制作网页中需要使用的部分图片,如按钮、标题、背景等。

4、将制作完成的图片保存为GIF或JPEG格式。

五、实验条件连接到因特网的MPC、扫描仪、数字相机、Windows XP操作系统、图像处理软件Photoshop 7.0。

六、实验基本步骤打开图像文件:♦选择【文件】→【打开】选择图片♦Photoshop允许一次打开多个图像文件,按住【Shift】键可以选择连续的文件,按住【Ctrl】键可以选择不连续的文件图像的放大和缩小:♦利用工具箱的放大镜工具就可以方便地对图像成比例地放大与缩小。

设置图像大小:♦【图像】→【图像大小】命令可以调整图像的大小,但调整尺寸后,会影响图像的质量。

可以通过按快捷键来快速选择工具箱中的某一工具:选框-M 移动-V 套索-L 魔棒-W 喷枪-J 画笔-B 铅笔-N 橡皮图章-S 历史记录画笔-Y 橡皮擦-E 模糊-R 减淡-O 钢笔-P 文字-T 度量-U 渐变-G 油漆桶-K 吸管-I 抓手-H 缩放-Z 默认前景和背景色-D 切换前景和背景色-X 编辑模式切换-Q 显示模式切换-F填充工具:Shift+Backspace打开填充对话框;Alt+Backspace和Ctrl+Backspace组合键分别为填充前景色和背景色;按Alt+Shift+Backspace及Ctrl+Shift+Backspace组合键在填充前景及背景色的时候只填充已存在的像素(保持透明区域)。

实验项目名称:Huffman编码算法实现实验日期:2011.12. 实验室:5205试验台号:同组者:一、实验目的本实验旨在加深学生对压缩理论和技术的理解,增进对压缩编码算法的设计和编写能力。

掌握Visual C++编程软件和Huffman算法。

二、主要软、硬件(1) MPC。

(2) Windows 2000操作系统。

(3) VC++。

三、实验内容多媒体数据压缩分为有损数据压缩和无损数据压缩,熵编码(统计编码)是典型的无损数据压缩。

Huffman编码属于统计编码的一种,是最优的整数编码。

三、实验要求1、掌握Huffman编码的原理及算法。

2、了解VC++编程环境。

3、编写代码实现Huffman算法。

四、实验条件MPC、Windows XP操作系统、Visual C++。

五、调试及结果测试#include<stdio.h>#include<iostream>#include<string.h>#include<stdlib.h>using namespace std;const MAXSIZE=100;typedef struct Huffmantree{char cname;int weight,mark;struct Huffmantree *parent,*lchild,*rchild,*next;}Hftree,*linktree;linktree tidy_string(char ch[]){int i=0;linktree tree,ptr,beforeptr,node;tree=(linktree)malloc(sizeof(Hftree)); if(!tree)return NULL;tree->next=NULL;for(i=0;ch[i]!='\0'&&ch[i]!='\n';i++) {ptr=tree;beforeptr=tree;node=(linktree)malloc(sizeof(Hftree)); if(!node)return NULL;node->parent=NULL;node->lchild=NULL;node->rchild=NULL;node->next=NULL;node->mark=0;node->cname=ch[i];node->weight=1;if(tree->next==NULL)tree->next=node;else{ptr=tree->next;while(ptr&&ptr->cname!=node->cname) {ptr=ptr->next;beforeptr=beforeptr->next;}if(ptr&&ptr->cname==node->cname){ptr->weight+=1;free(node);}else{node->next=beforeptr->next;beforeptr->next=node;}}return tree;}linktree squent_node(linktree tree) {linktree head,ph,pt,beforeph;head=(linktree)malloc(sizeof(Hftree)); if(!head)return NULL;head->next=NULL;ph=head;beforeph=head;while(tree->next){pt=tree->next;tree->next=pt->next;pt->next=NULL;ph=head->next;beforeph=head;if(head->next==NULL)head->next=pt;else{while(ph&&ph->weight<pt->weight){ph=ph->next;beforeph=beforeph->next;}pt->next=beforeph->next;beforeph->next=pt;}}free(tree);return head;}linktree createHtree(linktree tree){linktree p,q,newnode,beforep;for(p=tree->next,q=p->next;p!=NULL&&q!=NULL;p=tree->next,q=p->next) {tree->next=q->next;q->next=NULL;p->next=NULL;newnode=(linktree)malloc(sizeof(Hftree));if(!newnode)return NULL;newnode->next=NULL;newnode->mark=0;newnode->lchild=p;newnode->rchild=q;p->parent=newnode;q->parent=newnode;newnode->weight=p->weight+q->weight;p=tree->next;beforep=tree;if(p!=NULL&&p->weight>=newnode->weight){newnode->next=beforep->next;beforep->next=newnode;}else{while(p!=NULL&&p->weight<newnode->weight){p=p->next;beforep=beforep->next;}newnode->next=beforep->next;beforep->next=newnode;}}return (tree->next);}void Huffman_Coding(linktree tree){int index=0;char *code;linktree ptr=tree;code=(char*)malloc(10*sizeof(char));printf("字符以及它的相应权数:哈夫曼编码:\n\n"); if(ptr==NULL){printf("哈夫曼树是空的!\n");exit(0);}else{while(ptr->lchild&&ptr->rchild&&ptr->mark==0){while(ptr->lchild&&ptr->lchild->mark==0){code[index++]='0';ptr=ptr->lchild;if(!ptr->lchild&&!ptr->rchild){ptr->mark=1;code[index]='\0';printf("\tw[%c]=%d\t\t\t",ptr->cname,ptr->weight); for(index=0;code[index]!='\0';index++)printf("%c",code[index]);printf("\n");ptr=tree;index=0;}}if(ptr->rchild&&ptr->rchild->mark==0){ptr=ptr->rchild;code[index++]='1';}if(!ptr->lchild&&!ptr->rchild){ptr->mark=1;code[index++]='\0';printf("\tw[%c]=%d\t\t\t",ptr->cname,ptr->weight); for(index=0;code[index]!='\0';index++)printf("%c",code[index]);printf("\n");ptr=tree;index=0;}if(ptr->lchild->mark==1&&ptr->rchild->mark==1){ptr->mark=1;ptr=tree;index=0;}}}printf("\n");free(code);}void Huffamn_Decoding(linktree tree,char code[]){int i=0,j=0;char *char0_1;linktree ptr=tree;char0_1=(char*)malloc(10*sizeof(char));cout<<"哈夫曼编码相应的字符\n\n";for(j=0,ptr=tree;code[i]!='\0'&&ptr->lchild&&ptr->rchild;j=0,ptr=tree) {for(j=0;code[i]!='\0'&&ptr->lchild&&ptr->rchild;j++,i++){if(code[i]=='0'){ptr=ptr->lchild;char0_1[j]='0';}if(code[i]=='1'){ptr=ptr->rchild;char0_1[j]='1';}}if(!ptr->lchild&&!ptr->rchild){char0_1[j]='\0';for(j=0;char0_1[j]!='\0';j++)cout<<char0_1[j];printf("\t\t%c\n",ptr->cname);}if(code[i]=='\0'&&ptr->lchild&&ptr->rchild){char0_1[j]='\0';cout<<" 没有与最后几个字符的0,1序列:"<<char0_1<<"相匹配的字符!"<<endl; return;}}free(char0_1);}void deletenode(linktree tree){linktree ptr=tree;if(ptr){deletenode(ptr->lchild);deletenode(ptr->rchild);free(ptr);}}int main(){char string[MAXSIZE],code[MAXSIZE];linktree temp,ht,htree,ptr=NULL;cout<<"编码:请输入要当前字符串:"<<endl;cin>>string;cout<<endl;temp=tidy_string(string);ht=squent_node(temp);htree=createHtree(ht);Huffman_Coding(htree);cout<<"解码:请输入要解码的0,1序列:"<<endl;cin>>code;cout<<endl;Huffamn_Decoding(htree,code);deletenode(htree);return 0;}运行结果:六、思考题1、总结实验体会。

相关文档
最新文档