欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构与算法课内实验实验报告Word格式.docx

    • 资源ID:7823668       资源大小:724.96KB        全文页数:20页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构与算法课内实验实验报告Word格式.docx

    1、3) 对于每段数据,如果出现时间戳重复的点,保留第一个点,删掉后面的重复点;4) 删除掉时间戳重复的点之后,对于每段数据进行如下计算:(1)移动持续时间、(2)移动速度序列、(3)移动加速度序列、(4)平均速度(计算方法见下述提示),自定义一个合适的数据结构类型保存上述4种数据,以方便后续的数据处理。比如定义一个结构体,那么结构体中包含4项分别对应上述计算的4种类型的数据。实验二 数据排序和查找综合运用数据结构所学知识,掌握抽象数据类型的定义方法,熟悉并熟练运用查找、排序算法以及文件操作。自定义合适的抽象数据类型存储数据,并实现下述要求的查找和排序功能。1、数据处理1) 数据处理的过程在第一次

    2、实验数据处理的基础上继续进行;经过实验一中1)4)数据处理之后,对于每个样本,数据被分为16段,每段数据有一个数据结构实体存储本段的段ID和4)中计算得到的4个变量:(1)移动持续时间、(2)移动速度序列、(3)移动加速度序列、(4)平均速度。2) 对于每段移动,计算平均速度在m个样本上的速度平均值,16段移动可以得到16个速度平均值,对这16个速度平均值进行排序,给出最大和最小速度对应的段ID和平均速度。3) 对于每段移动,计算移动持续时间在m个样本上的移动持续时间平均值,16段移动可以得到16个移动持续时间平均值,对这16个移动持续时间平均值进行排序,给出最长和最短移动持续时间对应的段ID

    3、和移动持续时间。实验提示1. 鼠标操作示意图16段移动,其中,前8段移动以鼠标单击为分割点,后8段移动以鼠标双击为分割点。fig1鼠标操作示意图2. 原始鼠标数据格式文本文件中的数据分多行保存,每一行的数据有4个维度,数据格式为(鼠标操作类型、x坐标、y坐标、时间戳)table1 鼠标操作类型鼠标操作类型数值(十进制)初始状态512移动或静止左键按下513左键放开514eg:鼠标操作类型 x坐标 y坐标 时间戳512, 570, 372, 5724860 移动起始点. . . . 移动持续中512, 575, 372, 5724884 移动终止点513, 576, 372, 5724796 分

    4、割点512, 576, 372, 5724818 点击时间间隔514, 576, 372, 5724884 分割点3. 第i点速度计算:如果x轴速度大于y轴速度,那么第i点的速度等于x轴速度;如果y轴速度大于x轴速度,那么第i点的速度等于y轴速度。对于每段第一个点,当i=1的时候,i-1等于0,所以第一点的速度记为0。4. 第i点加速度计算:对于每段第一个点当i=1的时候,i-1等于0,所以第一个点的加速度记为0。5. 移动持续时间: 对于每段移动,移动结束点的时间戳减去移动起始点的时间戳。6. 平均速度每一段的平均速度等于该段每一点的速度值之和与该段总点数的比值。三、要点分析题目中涉及的主要

    5、知识点:1、抽象数据结构类型的定义及使用。分别定义了四个数据结构类型struct Record(每条记录的存储结构)、struct Sample (每个样本(文件)的存储结构)struct Data(读取原始数据时的中间存储结构)struct Result (统计结果的存储结构)。2、文件的基本操作。文件的打开及读取数据,写入数据等。3、排序算法。对得到的结果进行排序,得到最大最小值。4、建立哈希函数进行查找操作。四、程序的算法描述1、所用存储结构:typedef struct Record /每条记录的存储结构 int ID; /记录的ID号 int interval; /每段记录的移动时间

    6、 float v100; /每段记录的速度序列 float a100; /每段记录的加速度序列 float average; /每段的平均速度Record;typedef struct Sample /每个样本(文件)的存储结构 char filename40; /文件名 Record record16; /文件中的十六段记录Sample;typedef struct Data /读取原始数据时的中间存储结构 int x; /x坐标 int y; /y坐标 int time; /时间戳 int type; /操作类型Data;typedef struct Result /统计结果的存储结构 /

    7、每段的ID float average_v; /每段在m个文件上的平均速度 int average_interval;/每段在m个文件上的平均移动时间Result;2、程序中各函数的简要说明:(1)void statistic(Sample *sample,int m)统计函数,将m个文件的原始数据读入并进行初步处理。借助于data0、data1俩个数据交替读入文件内容,根据数据的操作类型执行不同的操作。若是512,则进行速度、加速度的计算及移动时间的累加;若是513、514,则进行数据的切分。在对数据进行统计的同时,将统计结果写入文件“log1.txt”中。(2)void analyse(R

    8、esult result16,Sample *sample,int m)分析函数。求出各项数据在m个文件上的平均值,并利用冒泡法进行排序,将排序结果结最大最小值写入文件“log2.txt”中。(3)int main()主函数:调用statistic(sample,m);analyse(result,sample,m);统计数据并实现查询功能。由输入要查找的ID号,用哈希函数计算的相应的存储地址,得到查询结果。3、源代码完整程序及相应说明如下:#include stdio.hstdlib.hmalloc.hmath.hstring.hvoid statistic(Sample *sample,i

    9、nt m)/统计函数,将m个文件的原始数据读入并进行初步处理 FILE *fp; FILE *fpp; if(fpp=fopen(log1.txt,w)=NULL) printf(无法打开文件);return; int i,j,k=0; Data data2;/俩个原始数据单元,交替读入数据 for(i=0;im;i+) while(fp=fopen(samplei.filename,r)=NULL)/打开文件,若文件无法打开,重新输入 printf(无法打开第%d个文件,请重新输入n,i+1); scanf(%s,samplei.filename); fprintf(fpp,第%d个文件的文

    10、件名:%sn,i+1,samplei.filename); fscanf(fp,%d %d %d %d,&data0.type,&data0.x,&data0.y,&data0.time); for(j=0;j16;j+) float sum=0; int count=0; for(k=0;kabs(float(data0.y-data1.y)/float(data0.time-data1.time) samplei.recordj.vk=float(data0.x-data1.x)/float(data0.time-data1.time); samplei.recordj.ak=sample

    11、i.recordj.vk/(data1.time-data0.time); sum=sum+samplei.recordj.vk; k+; count+; else samplei.recordj.vk=(float(data0.y-data1.y)/float(data0.time-data1.time); data0=data1; samplei.recordj.interval=data1.time-samplei.recordj.interval; samplei.recordj.average=sum/float(count); fprintf(fpp,第%d个样本的第%d个记录的I

    12、D:%dn,i+1,j+1,samplei.recordj.ID);/将处理结果写入文件中第%d个样本的第%d个记录的移动持续时间:,i+1,j+1,samplei.recordj.interval);第%d个样本的第%d个记录的平均速度:%fn,i+1,j+1,samplei.recordj.average);第%d个样本的第%d个记录的速度及加速度序列:ntvttan,i+1,j+1);k+) if(samplei.recordj.vk=300000000)break; fprintf(fpp,%9.6ft%9.6fn,samplei.recordj.vk,samplei.recordj.

    13、ak); if(data1.type=513)/对文件进行切分 while(data0.type=512)fscanf(fp, if(data0.type=513) fscanf(fp, while(data0.type=512)fscanf(fp, continue; fclose(fp); fclose(fpp); printf(原始数据读入成功,已存入log1.txtnvoid analyse(Result result16,Sample *sample,int m)/分析函数。求出各项数据在m个文件上的平均值,并排序 int i,j,k; int sum_time; float sum

    14、_v; Result temp;log2.txt for(j=0;j+)/对16段上的数据在m个文件上求平均值 sum_time=0; sum_v=0.0; for(i=0; sum_time+=samplei.recordj.interval; sum_v+=samplei.recordj.average; resultj.ID=j+1; resultj.average_interval=sum_time/m; resultj.average_v=sum_v/float(m); fprintf(fpp,按移动时间由小到大排序:nID、移动时间、平均速度:ni+)/对16个数据用冒泡法按时间进

    15、行排序15-i; if(resultj.average_interval=resultj+1.average_interval) temp=resultj;resultj=resultj+1;resultj+1=temp;%2dt%4dtt%9.6fn,result15-i.ID,result15-i.average_interval,result15-i.average_v);最大移动时间段的信息:n%dt%dtt%9.6fn,result0.ID,result0.average_interval,result0.average_v);最小移动时间段的信息:n%dt%dtt%9.6fnn,r

    16、esult15.ID,result15.average_interval,result15.average_v);按平均速度由小到大排序: if(abs(resultj.average_v)=(i*100+101)&id=1&=16)flag=0; if(flag)printf(输入错误n查找结果: if(id/100) printf(%st%dt%dt%9.6fn,sampleid/100-1.filename,sampleid/100-1.recordid%100-1.ID,sampleid/100-1.recordid%100-1.interval,sampleid/100-1.recordid%100-1.average); else if(resulti.ID=id)break;%dt%dt%9.6fn,resulti.ID,resulti.average_interval,resulti.average_v);是否继续:YES or NO?Thanks.n r


    注意事项

    本文(数据结构与算法课内实验实验报告Word格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开