2023年數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第1頁(yè)
2023年數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第2頁(yè)
2023年數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第3頁(yè)
2023年數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第4頁(yè)
2023年數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)報(bào)告

一、實(shí)驗(yàn)任務(wù)

實(shí)驗(yàn)題目:數(shù)據(jù)結(jié)構(gòu)與算法課內(nèi)實(shí)驗(yàn)

二、實(shí)驗(yàn)內(nèi)容

實(shí)驗(yàn)背景:運(yùn)用數(shù)據(jù)結(jié)構(gòu)的知識(shí)分析鼠標(biāo)操作者的鼠標(biāo)行為,評(píng)價(jià)鼠標(biāo)的操作效率,比如最大

移動(dòng)速度、平均移動(dòng)速度等。

實(shí)驗(yàn)一文獻(xiàn)讀取和數(shù)據(jù)解決

(一)實(shí)驗(yàn)?zāi)康模壕C合運(yùn)用數(shù)據(jù)結(jié)構(gòu)所學(xué)知識(shí),掌握抽象數(shù)據(jù)類型的定義方法以及文獻(xiàn)操作。

(二)基本規(guī)定:讀取文本文獻(xiàn)數(shù)據(jù),自定義合適的抽象數(shù)據(jù)類型按照規(guī)定存儲(chǔ)數(shù)據(jù),并實(shí)現(xiàn)

下述規(guī)定。

(三)內(nèi)容提綱:

I、數(shù)據(jù)采集

本次實(shí)驗(yàn),每位同學(xué)對(duì)自己采集到的數(shù)據(jù)進(jìn)行解決。數(shù)據(jù)采集的規(guī)定如下:

1)采集時(shí)間:(1)11.15?11.16(數(shù)據(jù)結(jié)構(gòu)專題實(shí)驗(yàn)第4次實(shí)驗(yàn));

(2)11.24(第11周周末);

(3)第5次數(shù)據(jù)結(jié)構(gòu)專題實(shí)驗(yàn)時(shí)間;

(4)課內(nèi)實(shí)驗(yàn)驗(yàn)收時(shí)間待定

2)采集地點(diǎn):西一樓307;

3)采集時(shí)長(zhǎng):每位同學(xué)5~10分鐘;

4)采集內(nèi)容:每位同學(xué)認(rèn)真完畢指定的鼠標(biāo)操作,涉及鼠標(biāo)的移動(dòng)、鼠標(biāo)單擊和鼠標(biāo)雙擊

(見(jiàn)下述提醒1)。

2、數(shù)據(jù)解決

采集到的數(shù)據(jù)會(huì)以文本的形式保存,一個(gè)文本文獻(xiàn)稱為一個(gè)樣本。每位同學(xué)需要m個(gè)樣

本完畢實(shí)驗(yàn)。讀取文本文獻(xiàn)并對(duì)數(shù)據(jù)進(jìn)行如下操作:

1)自定義合適的數(shù)據(jù)結(jié)構(gòu)類型保存讀取到的數(shù)據(jù),以方便后續(xù)的數(shù)據(jù)解決(原始數(shù)據(jù)

格式見(jiàn)下述提醒);

2)對(duì)一個(gè)樣本中的數(shù)據(jù)按照鼠標(biāo)操作的事件類型(單擊和雙擊)進(jìn)行切分,一個(gè)樣本

中的數(shù)據(jù)可以切分為16段(鼠標(biāo)事件類型的定義見(jiàn)下述提醒);

3)對(duì)于每段數(shù)據(jù),假如出現(xiàn)時(shí)間戳反復(fù)的點(diǎn),保存第一個(gè)點(diǎn),刪掉后面的反復(fù)點(diǎn);

4)刪除掉時(shí)間戳反復(fù)的點(diǎn)之后,對(duì)于每段數(shù)據(jù)進(jìn)行如下計(jì)算:(1)移動(dòng)連續(xù)時(shí)間、(2)

移動(dòng)速度序列、(3)移動(dòng)加速度序列、(4)平均速度(計(jì)算方法見(jiàn)下述提醒),自定義一個(gè)合

適的數(shù)據(jù)結(jié)構(gòu)類型保存上述4種數(shù)據(jù),以方便后續(xù)的數(shù)據(jù)解決。比如定義一個(gè)結(jié)構(gòu)體,那么結(jié)

構(gòu)體中包含4項(xiàng)分別相應(yīng)上述計(jì)算的4種類型的數(shù)據(jù)。

實(shí)驗(yàn)二數(shù)據(jù)排序和查找

(一)實(shí)驗(yàn)?zāi)康模壕C合運(yùn)用數(shù)據(jù)結(jié)構(gòu)所學(xué)知識(shí),掌握抽象數(shù)據(jù)類型的定義方法,熟悉并純熟運(yùn)

用查找、排序算法以及文獻(xiàn)操作。

(二)基本規(guī)定:自定義合適的抽象數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù),并實(shí)現(xiàn)下述規(guī)定的查找和排序功能。

(三)內(nèi)容提綱:

1、數(shù)據(jù)解決

1)數(shù)據(jù)解決的過(guò)程在第一次實(shí)驗(yàn)數(shù)據(jù)解決的基礎(chǔ)上繼續(xù)進(jìn)行;通過(guò)實(shí)驗(yàn)一中1)~4)

數(shù)據(jù)解決之后,對(duì)于每個(gè)樣本,數(shù)據(jù)被分為16段,每段數(shù)據(jù)有一個(gè)數(shù)據(jù)結(jié)構(gòu)實(shí)體存儲(chǔ)本段的

段1D和4)中計(jì)算得到的4個(gè)變量:(1)移動(dòng)連續(xù)時(shí)間、(2)移動(dòng)速度序列、(3)移動(dòng)加速度序

列、(4)平均速度。

2)對(duì)于每段移動(dòng),計(jì)算平均速度在m個(gè)樣本上的速度平均值,16段移動(dòng)可以得到16

個(gè)速度平均值,對(duì)這16個(gè)速度平均值進(jìn)行排序,給出最大和最小速度相應(yīng)的段ID和平均速

度。

3)對(duì)于每段移動(dòng),計(jì)算移動(dòng)連續(xù)時(shí)間在m個(gè)樣本上的移動(dòng)連續(xù)時(shí)間平均值,16段移動(dòng)可

以得到16個(gè)移動(dòng)連續(xù)時(shí)間平均值,對(duì)這16個(gè)移動(dòng)連續(xù)時(shí)間平均值進(jìn)行排序,給出最長(zhǎng)和最

短移動(dòng)連續(xù)時(shí)間相應(yīng)的段ID和移動(dòng)連續(xù)時(shí)間。

實(shí)驗(yàn)提醒

1.鼠標(biāo)操作示意圖

16段移動(dòng),其中,前8段移動(dòng)以鼠標(biāo)單擊為分割點(diǎn),后8段移動(dòng)以鼠標(biāo)雙擊為分割點(diǎn)。

figl鼠標(biāo)操作示意圖

2.原始鼠標(biāo)數(shù)據(jù)格式

文本文獻(xiàn)中的數(shù)據(jù)分多行保存,每一行的數(shù)據(jù)有4個(gè)維度,數(shù)據(jù)格式為

(鼠標(biāo)操作類型、x坐標(biāo)、y坐標(biāo)、時(shí)間戳)

tab1e1鼠標(biāo)操作類型

鼠標(biāo)操作類型數(shù)值(十進(jìn)制)

初始狀態(tài)512

移動(dòng)或靜止512

左鍵按下513

左鍵放開(kāi)514

eg:

鼠標(biāo)操作類型x坐標(biāo)y坐標(biāo)時(shí)間戳

512,570,5724860。,372。移

動(dòng)起始點(diǎn)

移動(dòng)連續(xù)

512,575,5724884。,372。移動(dòng)終止

點(diǎn)

513,576,372,5724796分割點(diǎn)

512,o576,372,5724818。點(diǎn)擊時(shí)間間隔

514,576,372?,5724884分割點(diǎn)

3.第i點(diǎn)速度計(jì)算:

(第i點(diǎn)x坐標(biāo))一(第i-1■點(diǎn)x坐標(biāo)〉

x軸速度—

兩點(diǎn)的時(shí)間差

(第i點(diǎn)y坐標(biāo))一(第i-i點(diǎn)y坐標(biāo))

y軸速度=

兩點(diǎn)的時(shí)間差

假如x軸速度大于y軸速度,那么第i點(diǎn)的速度等于x軸速度;

假如y軸速度大于x軸速度,那么第i點(diǎn)的速度等于y軸速度。

對(duì)于每段第一個(gè)點(diǎn),當(dāng)i=l的時(shí)候,i-1等于0,所以第一點(diǎn)的速度記為0。

4.第i點(diǎn)加速度計(jì)算:

(第i點(diǎn)速度)一(第i-l點(diǎn)速度)

兩點(diǎn)的時(shí)間差

對(duì)于每段第一個(gè)點(diǎn)當(dāng)i=l的時(shí)候,i—l等于0,所以第一個(gè)點(diǎn)的加速度記為0。

5.移動(dòng)連續(xù)時(shí)間:

對(duì)于每段移動(dòng),移動(dòng)結(jié)束點(diǎn)的時(shí)間戳減去移動(dòng)起始點(diǎn)的時(shí)間戳。

6.平均速度

每一段的平均速度等于該段每一點(diǎn)的速度值之和與該段總點(diǎn)數(shù)的比值。

三、要點(diǎn)分析

題目中涉及的重要知識(shí)點(diǎn):

1、抽象數(shù)據(jù)結(jié)構(gòu)類型的定義及使用。分別定義了四個(gè)數(shù)據(jù)結(jié)構(gòu)類型structRe

cord(每條記錄的存儲(chǔ)結(jié)構(gòu))、structSamp1e(每個(gè)樣本(文獻(xiàn))的存儲(chǔ)結(jié)構(gòu))struct

Data(讀取原始數(shù)據(jù)時(shí)的中間存儲(chǔ)結(jié)構(gòu))structResult(記錄結(jié)果的存儲(chǔ)結(jié)構(gòu))。

2、文獻(xiàn)的基本操作。文獻(xiàn)的打開(kāi)及讀取數(shù)據(jù),寫入數(shù)據(jù)等。

3、排序算法。對(duì)得到的結(jié)果進(jìn)行排序,得到最大最小值。

4、建立哈希函數(shù)進(jìn)行查找操作。

四、程序的算法描述

1、所用存儲(chǔ)結(jié)構(gòu):

typedefstructRecord//每條記錄的存儲(chǔ)結(jié)構(gòu)

“ntID;//記錄的ID號(hào)

eintinterval;//每段記錄的移動(dòng)時(shí)間

floatv[l00];〃每段記錄的速度序列

floata[100];〃每段記錄的加速度序列

floataverage;//每段的平均速度

(Record;

typedefstructSample〃每個(gè)樣本(文獻(xiàn))的存儲(chǔ)結(jié)構(gòu)

charfi1ename[40];〃文獻(xiàn)名

◎Recordrecord[l6];〃文獻(xiàn)中的十六段記錄

}Sample;

typedefstructData〃讀取原始數(shù)據(jù)時(shí)的中間存儲(chǔ)結(jié)構(gòu)

intx;//x坐標(biāo)

ointy;〃y坐標(biāo)

inttime;//時(shí)間戳

ointtype;//操作類型

}Data;

typedefstrucResult//記錄結(jié)果的存儲(chǔ)結(jié)構(gòu)

ointID;〃每段的ID

floataverage_v;〃每段在m個(gè)文獻(xiàn)上的平均速度

Antaverage_interval;//每段在m個(gè)文獻(xiàn)上的平均移動(dòng)時(shí)間

}Resu1t;

2、程序中各函數(shù)的簡(jiǎn)要說(shuō)明:

⑴voidstatistic(Samp1esamp1e,intm)記錄函數(shù),將m個(gè)文獻(xiàn)的原始數(shù)據(jù)

讀入并進(jìn)行初步解決。借助于data[0]>data"]倆個(gè)數(shù)據(jù)交替讀入文獻(xiàn)內(nèi)容,根據(jù)數(shù)據(jù)的操

作類型執(zhí)行不同的操作。若是512,則進(jìn)行速度、加速度的計(jì)算及移動(dòng)時(shí)間的累加;若是51

3、514,則進(jìn)行數(shù)據(jù)的切分。在對(duì)數(shù)據(jù)進(jìn)行記錄的同時(shí),將記錄結(jié)果寫入文獻(xiàn)“l(fā)ogl.txt"匚九

(2)voidanalyse(Resultresult[16],Sample*samp1e,intm)分析函數(shù)。求出各項(xiàng)數(shù)

據(jù)在m個(gè)文獻(xiàn)上的平均值,并運(yùn)用冒泡法進(jìn)行排序,將排序結(jié)果結(jié)最大最小值寫入文獻(xiàn)“1o

g2.txt中。

⑶intmain()主函數(shù):調(diào)用statistic(sample,m);analyse(result,sample,m);記錄數(shù)

據(jù)并實(shí)現(xiàn)查詢功能。由輸入要查找的ID號(hào),用哈希函數(shù)計(jì)算的相應(yīng)的存儲(chǔ)地址,得到查詢

結(jié)果。

3、源代碼

完整程序及相應(yīng)說(shuō)明如下:

#inc1ude"stdio.hH

#incIudeMstdlib.h"

#include"malloc.h”

#inc1udenmath.h"

#include'*string.h"

typedefstructRecord〃每條記錄的存儲(chǔ)結(jié)構(gòu)

(

°intID;//記錄的ID號(hào)

"ntinterva1;〃每段記錄的移動(dòng)時(shí)間

,floatv[100];//每段記錄的速度序列

floata[100];〃每段記錄的加速度序列

fifloataverage;//每段的平均速度

}Record;

typedefstructSample〃每個(gè)樣本(文獻(xiàn))的存儲(chǔ)結(jié)構(gòu)

(

ocharfilename[40];//文獻(xiàn)名

Recordrecord[16];//文獻(xiàn)中的十六段記錄

}Sample;

typedefstructData//讀取原始數(shù)據(jù)時(shí)的中間存儲(chǔ)結(jié)構(gòu)

(

ointx;//x坐標(biāo)

。inty;//y坐標(biāo)

“nttime;//時(shí)間戳

°inttype;//操作類型

}Data;

typedefstructResult//記錄結(jié)果的存儲(chǔ)結(jié)構(gòu)

(

TntID;//每段的ID

floataverage,v;〃每段在m個(gè)文獻(xiàn)上的平均速度

ointaverage_interval;〃每段在m個(gè)文獻(xiàn)上的平均移動(dòng)時(shí)間

}Resu1t;

voidstatistic(Sample*samp1e,intm)//記錄函數(shù),將m個(gè)文獻(xiàn)的原始數(shù)據(jù)讀入并

進(jìn)行初步解決

(

oFILE*fp;

FILE*fpp;

oif((fpp=fopen(nlog1.txt\Mw"))==NULL)

{printf("無(wú)法打開(kāi)文獻(xiàn)”);return;)

“ntij,k=0;

Datadata[2];//倆個(gè)原始數(shù)據(jù)單元,交替讀入數(shù)據(jù)

for(i=0;i<m;i++)

°(

8\vhi1e((fp=fopen(sample[i].filename,r"))==NULL)〃打開(kāi)文獻(xiàn),若文獻(xiàn)無(wú)法

打開(kāi),重新輸入

(

。Printf("無(wú)法打開(kāi)第%d個(gè)文獻(xiàn),請(qǐng)重新輸入\n",i+1);

。scanf("%sM,samp1e[i].filename);

。fprintf(fpp/第%d個(gè)文獻(xiàn)的文獻(xiàn)名:%s\n”,i+l,samp1e[i].filename);

ofscanf(fp,"%d%d%d%d",&data[0].type,&data[0].x,&data[0].y,&data[O].

time);

。for(j=0;j<16;j++)

6{

e3f1oatsum=0;

Mntcount=0;

for(k=0;k<100;k++)//現(xiàn)將所有的速度初值賦值為最大

。{samp1e[i].record[j].v[k]=sample[i].recordfj].a[k]=;}

求=0;

^samp1e[i].record[j].ID=(i+l)*100+j+l;〃產(chǎn)生每段的ID,百位代表文獻(xiàn)號(hào),

十位和個(gè)位代表第幾段

。?sample[i].record[j].interval=data[0].time;

while(!feof(fp))

。。fscanf(fp,"%d%d%d%d",&data[l].type,&data[l].x,&da

ta[l].y,&data[l].time);

“whi1e(data[0].time==data[1].time)//若時(shí)間戳相同,則重新讀入

。{fscanf(fp,n%d%d%d%d",&data[l].type,&data[1].x,&data[1].y,

&data[1].time);)

if(data[l].type==513){k=0;break;}//若碰到513,代表該段結(jié)束,

進(jìn)入下一段的記錄

if(abs(float(datal0].x-data[11.x)/float(data[0].time-data[I].time))>a

bs(float(data[0].y-data[l].y)/float(data[0].time—data[1].time)))

sample[i].record[j].v[k]=float(data[0].x—data[1].x)/f1oat(data

data[1].time);

?sample[i].record[j].a[k]=sample[i].record[j].v[k]/(data[1].time-d

ata[O].time);

gsum=sum+samp1e[i].record[j].vEk];

。。。k++;

8count++;

000|

。else

°(

。esamp1e[i].recordLj].v[k]=(float(data[0].y-data[1J.y)/float(d

ata[0].time-data[1].time));

sample[i].record[j].a[k]=samp1e[i].record[j].v[k]/(dat

a[l].time-data[O].time);

。。sum=sum+samp1e[i].record[j].v[k.];

。k++;

w>count++;

000I

data[0]=data[l];

00J

。。sample[i].record[j].interva1=data[1].time—sample[i].record[j].

interva1;

。samp1e[i].record[j].average=sum/float(count);

“efprintf(fpp,"第%d個(gè)樣本的第%d個(gè)記錄的ID:%d\n”,i+l,j+1,sample[i].reco

rd[j],ID),將解決結(jié)果寫入文獻(xiàn)中

。他rintf(fpp,^%d個(gè)樣本的第%d個(gè)記錄的移動(dòng)連續(xù)時(shí)間:%d\n",i+1,j+1,sam

p1e[i].record[j].interval);

ofprintf(fpp,"第%(1個(gè)樣本的第%d個(gè)記錄的平均速度:%f\nn,i+1J+1,

sample[i].record[j].average);

。fprintf(fpp,"第%d個(gè)樣本的第%d個(gè)記錄的速度及加速度序列:\n\tv\t\ta

\nM,i+l,j+1);

4or(k=0;k<l00;k++)

b{

。。if(sample[i].recordEj].v[k]==)break;

。fprintf(fpp,"%9.6f\t%9.6f\nn,samp1eLiJ.record[j].v[k],samp

1eLi].record[j].a[k]);

)

。。if(data[l].type==513)//對(duì)文獻(xiàn)進(jìn)行切分

ofscanf(fp,"%d%d%d%d",&data[0].type,&data[O].x,&data

[0].y,&data[0].time);

o<>whi1e(data[0].type==512){fscanf(fp,'f%d%d%d%d",&data[O].typ

e,&data[O].x,&data[O].y,&data[O].time);)

ofscanf(fp,n%d%d%d%dM,&data[0].type,&data[O].x,&data[O].y,&d

ata[O].time);

f(data[0].type==513)

oe{

oofscanf(fp,"%d%d%d%d",&data[0].type,&data[0].x,&da

ta[O].y,&data[0].time);

“while(data[0].type==512){fscanf(fpj%d%d%d%dn,&data[O].typ

e,&data[O].x,&data[0].y,&data[0].time);}

e。fscanf(fp,n%d%d%d%d",&data[0].type,&data[O].x,&dat

a[0].y,&data[O].time);

Odd)

“?continue;

O01

°}

)

3fc1ose(fp);

fclose(fpp);

printf("原始數(shù)據(jù)讀入成功,已存入logl.txt\n)

)

voidanalyse(Resultresult[16],Sample"sample,intm)〃分析函數(shù)。求出各項(xiàng)數(shù)

據(jù)在m個(gè)文獻(xiàn)上的平均值,并排序

(

inti,j,k;

intsum_time;

floatsum_v;

oResulttemp;

FILE*fpp;

if((fpp=fopen(,r1og2.txt",”w"))==NULL)

{Printf("無(wú)法打開(kāi)文獻(xiàn)”);return;}

forG=0;j<16;j++)〃對(duì)16段上的數(shù)據(jù)在m個(gè)文獻(xiàn)上求平均值

(

。sum_time=0;

wsum_v=0.0;

。for(i=0;i<m;i++)

00sum_time+=sample[i].recordEerval;

?osum_v+=sample[i].record[j].average;

00J

。result[j].ID=j+l;

resu1t[jj.average_interval=sum_time/m;

8result[j].average_v=sum_v/float(m);

)

fprintf(fppJ按移動(dòng)時(shí)間由小到大排序:\nID、移動(dòng)時(shí)間、平均速度:\n");

ofor(i=0;i〈16;i++)//對(duì)16個(gè)數(shù)據(jù)用冒泡法準(zhǔn)時(shí)間進(jìn)行排序

(

“for(j=0;j<15—i;j++)

00I

。if(result|j].average_interva1<=result|j+l].average_interval)

{temp=result[j];result[j]=resuItEj+1];result[j+l]=temp;}

°}

?ofprintf(fpp,"%2d\t%4d\t\t%9.6f\n",result|15-i].ID,result[15-i].aver

age_interval,resu1t[15-i].average_v);?

}

fPrintf(fpp,”最大移動(dòng)時(shí)間段的信息:\n%d\t%d\t\t%9.6f\n",resu1l[0].ID,re

sult[0].average_interva1,result[0].average_v);

?fprintf(fpp,"最小移動(dòng)時(shí)間段的信息:\n%d\t%d\t\t%9.6f\n\n",resuIt[15].ID,

result[15].average_interval,result[15].average_v);

fprintf(fpp,”按平均速度由小到大排序:\nlD、移動(dòng)時(shí)間、平均速度:\n");

for(i=0;i<16;i++)〃對(duì)16個(gè)數(shù)據(jù)用冒泡法準(zhǔn)時(shí)間進(jìn)行排序

。{

?=for(j=0;j<l5-i;j++)

00I

。oif(abs(resu1t[j].average_v)<=abs(result[j+l].average_v))

o{temp=result|j];result[j]=result[j+1];result[j+l]=temp;}

00}

。fprintf(fppJ%2d\t%4d\t\t%9.6f\nH,result[15-i].ID,resu1t[15-i].average_inter

va1,result[15-i].average__v);o

}

ofprintf(fpp最大平均速度段的信息:\n%d\t%d\t\t%9.6f\nn,result[0].ID,

result[O].average_interva1,resu1t[0].average_v);

fprintf(fpp,”最小平均速度段的信息:\n%d\t%d\t\t%9.6f\n\n',,resu1t[1

5].ID,resu1t[15].average_interval,result[15].average_v);

fc1ose(fpp);

sprintf(“數(shù)據(jù)分析完畢,排序結(jié)果已存入1og2.txt\n");

)

intmain()〃主函數(shù):調(diào)用statistic(sample,m);ana1yse(resu1t,sampie,

m);記錄數(shù)據(jù)并實(shí)現(xiàn)查詢功能

(

“nti,m,id,flag;

charstring[4];

Resultresu1t[16];

叩rintf(”請(qǐng)輸入要分析的文獻(xiàn)個(gè)數(shù):“);

oscanf("%d”,&m);

?Samp1e*sample;

sample=(Sample*)mal1oc(m*sizeof(Sample));//創(chuàng)建m個(gè)文獻(xiàn)的存儲(chǔ)空間

for(i=0;i<m;i++)

°(

gPrintf("請(qǐng)輸入第%d個(gè)文獻(xiàn)的文獻(xiàn)名:i+1);

。。scanf("%s",samp1e[i].filename);

statistic(samp1e,m);

analyse(result,sample,m);

叩rintf("是否要進(jìn)行查找操作?YESorNO:");//實(shí)現(xiàn)查找功能

?scanf("%s",string);

while(!strcmp(string,HYES"))

6{

。flag=l;

owhile(flag)

(

。叩rintf("請(qǐng)輸入要查找的ID號(hào):");

oooscanf("%d%&id);

<?for(i=0;i<m;i++)

。。{if(id>=(i*100+101)&&id<=(i*100+116))flag=0;}

if(id>=1&&id<=16)f1ag=0;

。。if(f1ag)printf(',輸入錯(cuò)誤\nn);

00|

printf("查找結(jié)果:\n");

if(id/100)

{printf("%s\t%d\t%d\t%9.6f\nu,sample[id/100—1].filename,samp

1e[id/100-1].record[id%100-1].ID,sample[id/100-1].record[id%100-1].

interva1,sample[id/100—1].record[id%100-l].average);)

?else

o。。for(i=0;i<16;i++)

。{if(result[i].ID==id)break;}

叩rintf("%d\t%d\t%9.6f\nH,result!i].ID,resu1t[ij.average_interva

1,resu1t[i].average_v);}

gprintf("是否繼續(xù):YESorNO?0);

scanf("%s",string);

)

printf(uThanks...\nM);

return0;

五、程序運(yùn)營(yíng)結(jié)果

C:\windows\system32\cmd.exe3I

3

:2120504044_1-TXT

:2120504044.2.TXT

:2120504044_3-TXT

已彳logl.txt

YES

便口ID號(hào):116

JJXT1166

-0.255829

20不

50繼

40續(xù)4:4SNO?)V72

查or1

V找E

號(hào)

要ID:16

結(jié)

果-

4

續(xù)73

否.So?,VE

查r

V我E

9的

DS204

結(jié)

果.

14:4JXT204844

20不_20.175194

50繼

40續(xù)SA2

nOOV

VE我

的D

^要.I:30

結(jié)

K果

4.4

:3TXT306843

2否0-0.646320

50繼

40續(xù)

鍵OrNO

7繼E

續(xù)

ks任

an按

引用*15HfcIMI辦?9aw

CX—63?五號(hào)-A,A“正G每次?;,?;AaBlAaBb(AaBb(兩勉i

咽?MKWB1U^AB-^x,*-AA?-叁三三色白廷?士?Eb6C1也2注3

15H日匕?-HDocer-E?t(i?xeK3fba?^*44...ff93oc,XQtogl.utX□logZAtt

E■rt141iI■Pt1J4,t,?tM:>uu14MMt?ta1*n;

Ht-U.UO23UU-U.UU3W。

e-0.062500-0.003906

9-0.066667-0.004444

?第1個(gè)樣本的第2個(gè)記錄的ID:102

9第1個(gè)樣本的第2個(gè)記錄的移動(dòng)持續(xù)時(shí)間:969

¥第1個(gè)樣本的第2個(gè)記錄的平均速度:0.564228

第1個(gè)樣本的第2個(gè)記錄的速度及加速度序列:

*Va

0.2500000.015625

0.4000000.026667

1.0625000.066406

S0.8125000.050781

?,1.7333330.115556

R:0.9375000.058594

X2.4375000.152344

R1.3333330.088889

2.4375000.152344

t.

1.2000000.080000

1.8125000.113281

s0.6875000.042969

36s??五號(hào)"A-AV:=?:=?□aX*?rAaBIAaBb(.4aBb(

USA-?x?BJu-AD-x*x,牛?A??呈叁三色in:叁?士?EPMl網(wǎng)2通3

E?H?li??<??BDoce^KXfe.國(guó)舌.doc,XQ]I09I.MXHlc>92.txi

414

B??????g>>?''''3"uu“"a”u”R”xilxxx"x"8"aaxJ*x?HA3」""“"""”'

0.1333330.008889

第3個(gè)樣本的第16個(gè)記錄的ID:316

第3個(gè)樣本的第16個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論