#include
#include
#include
#include
#include
#include
#include
#include
typedef struct Data{
char label[];
char type[];
int x;
int y;
int time;
}Data;
typedef struct Result{
int t[];
int v[];
int s[];
}Result;
char buf[1000];
Result result[1];
Data data[2];
int main()
{FILE*fp1=fopen("C:\Users\thinkpad\Desktop\1.txt","r");
FILE*fp2=fopen("C:\Users\thinkpad\Desktop\mouse.txt","w");
while((fgets(buf,1000,fp1))!=NULL)
{
if(buf[6]=='m'&&buf[11]=='u')
{
fputs(buf,fp2);
fputs("\n\n",fp2) ;
}
else if(buf[6]=='m'&&buf[11]=='d')
{
fputs(buf,fp2);
fputs("\n\n",fp2) ;
}
else
fputs(buf,fp2);
}
fclose (fp1);
fclose (fp2);
FILE*fp3=fopen("C:\Users\thinkpad\Desktop\mouse.txt","r");
int i=0,j=0,k=0,sum1=0,sum2=0;
fscanf(fp3,"%s %s %d %d %d",&data[0].label,&data[0].type,&data[0].x,&data[0].y,&data[0].time);
int a=data[0].x;
int b=data[0].y;
int c;
int d;
while(data[1].type!="mousedown")
{
fscanf(fp3,"%s %s %d %d %d",&data[1].label,&data[1].type,&data[1].x,&data[1].y,&data[1].time);
while(data[0].time==data[1].time)
{fscanf(fp3,"%s %s %d %d %d",&data[1].label,&data[1].type,&data[1].x,&data[1].y,&data[1].time);}
result[0].t[i]=data[1].time-data[0].time;
result[0].s[j]=sqrt(pow(data[1].x-data[0].x,2)+pow(data[1].y-data[0].y,2));
result[0].v[0]=0;
result[0].v[k+1]=result[0].s[j]/result[0].t[i];
sum1=sum1+result[0].v[k+1];
sum2=sum2+result[0].s[j];
i++;
j++;
k++;
data[0].x=data[1].x;
data[0].y=data[1].y;
data[0].time=data[1].time;
c=data[1].x;
d=data[1].y;
}
int average=sum1/k+1;
int efficiency=sqrt(pow(c-a,2)+pow(d-b,2))/sum2;
fclose (fp3);
}
最后要在控制台输出鼠标操作的位移速度时间序列,但是输出结果不理想!
涉及到除法,使用int作为除数是整除,所以应该用浮点数而不是整数。把你的int都修改为float