急请大家帮忙看看怎么用C++编写一个自行车里程表的程序,多谢
急请大家帮忙看看如何用C++编写一个自行车里程表的程序,谢谢!
要准备考试,室友mm求助我这道题,我也不懂~~~只能请大家帮忙了,多谢哈!
问题是要设计一个类来实现一个自行车里程兼测速计,简称为bikemeter,其性质如下:
bikemeter每秒钟都会从内部时钟inter_clock接收到时钟信号tick(),并且伴随着车轮每转一圈,轮轴上一个传感器会将信号click()传给bikemeter(相当于是两个计数器counter,一个用来计时一个用来计车轮转的圈数)。
在车轮转动时,会将轮的直径diameter告诉bikemeter。从以上这些信息,bikemeter就能够计算出其他信息,如当前速度current_speed,行驶距离distance以及平均速度average_speed。 同样的,bikemeter在每一个 "trip "(程序中会出现这个东西的定义,欧不知道啥米意思)开始前,可以被归零reset.
下面给的框架程序中,main()调用函数和bikemeter类去测试这个类bikemeter.在constructer中应该存放着车轮的直径diameter,单位为inch,可以设默认值为27。在行驶过程中,bikemeter会收到一系列的穿插着click和tick的信号,每一个click()代表着车轮转了一圈,每一个tick()代表着时钟走过一秒。因此,假设收到的一系列信号为
click(),click(),tick(),click(),click(),click(),tick(),click(),tick(),click(),tick(),click(),tick(),tick(),click(),click(),tick(),click().
那么在每一秒间隔内车轮转的圈数click()分别为:2,3,1,1,1,0,2. 在最后一个click后跟的是没有写出来的tick)。那么,在这么多秒内,行驶的距离为每秒内圈数之和*车轮的直径,圈数之和为2+3+1+1+1+0+2=10,直径为27 inch,那么距离即为10*27*pi(pi的值为3.14159),所经过的时间为7个tick(),即为7秒,那么平均速度average_speed即为10/7圈。
对于速度,要求bikemeter是以英里miles为单位的,表达为miles/hour,且每一秒,即每一个tick()时都要显示出当前速度speed, 即实时更新。为了知道实时的speed,要求采用的方法是知道每次最近4秒钟内的车轮转圈数click() 's。如前面的一系列信号,知道了7秒内的总圈数为10,前三秒内的圈数为2+3+1=6,则最近4个tick内的圈数为10-6=4圈,即这段时间内的click数为4。求最近4秒内的速度即为每秒显示的实时speed。
最后,框架程序还要比较两个bikemeter的累计行驶距离,利用逻辑操作符 <, <=,> ,> =,==以及!=, 如假设a的累计行驶距离比b大,那么bikemeter a > bikemeter b(是要在bikemeter的类中用操作符重载么?我瞎猜的~)
程序要求:完成class bikemeter的相关结构体和函数,并于框架程序结合起来,形成一个完整的程序,并经过主函数中的测试函数测试,能够正确运行
这是已给出的框架程序,
void ride(bikemeter &a, int trip[], int ct);
void mainTest();
void logicalOpsTest();
int main(){
cout < < "Test out the bikemeter class\n ";
mainTest();
logicalOpsTest();
cout < < "End of program\n ";
}
void logicalOpsTest(){
bikemeter a,b;
int trip[]={5,3,2,9,8,2,5,3,6,7};
ride(a,trip,9);
ride(b,trip,10);
cout < < "\n We compare two bikemeters by comparing their distances\n ";
cout < <a < < " <\n " < <b < < ": " < <(a <b) < <endl;
cout < <a < < " > \n " < <b < < ": " < <(a> b) < <endl;
cout < <a < < " <=\n " < <b < < ": " < <(a <=b) < <endl;
cout < <a < < " > =\n " < <b < < ": " < <(a> =b) < <endl;
cout < <a < < " ==\n " < <b < < ": " < <(a==b) < <endl;
cout < <a < < " !=\n " < <b < < ": " < <(a!=b) < <endl;
a.reset();
ride(a,trip,10);
cout < <a < < " <\n " < <b < < ": " < <(a <b) < <endl;
cout < <a < < " > \n " < <b < < ": " < <(a> b) < <endl;
cout < <a < < " <=\n " < <b < < ": " < <(a <=b) < <endl;
要准备考试,室友mm求助我这道题,我也不懂~~~只能请大家帮忙了,多谢哈!
问题是要设计一个类来实现一个自行车里程兼测速计,简称为bikemeter,其性质如下:
bikemeter每秒钟都会从内部时钟inter_clock接收到时钟信号tick(),并且伴随着车轮每转一圈,轮轴上一个传感器会将信号click()传给bikemeter(相当于是两个计数器counter,一个用来计时一个用来计车轮转的圈数)。
在车轮转动时,会将轮的直径diameter告诉bikemeter。从以上这些信息,bikemeter就能够计算出其他信息,如当前速度current_speed,行驶距离distance以及平均速度average_speed。 同样的,bikemeter在每一个 "trip "(程序中会出现这个东西的定义,欧不知道啥米意思)开始前,可以被归零reset.
下面给的框架程序中,main()调用函数和bikemeter类去测试这个类bikemeter.在constructer中应该存放着车轮的直径diameter,单位为inch,可以设默认值为27。在行驶过程中,bikemeter会收到一系列的穿插着click和tick的信号,每一个click()代表着车轮转了一圈,每一个tick()代表着时钟走过一秒。因此,假设收到的一系列信号为
click(),click(),tick(),click(),click(),click(),tick(),click(),tick(),click(),tick(),click(),tick(),tick(),click(),click(),tick(),click().
那么在每一秒间隔内车轮转的圈数click()分别为:2,3,1,1,1,0,2. 在最后一个click后跟的是没有写出来的tick)。那么,在这么多秒内,行驶的距离为每秒内圈数之和*车轮的直径,圈数之和为2+3+1+1+1+0+2=10,直径为27 inch,那么距离即为10*27*pi(pi的值为3.14159),所经过的时间为7个tick(),即为7秒,那么平均速度average_speed即为10/7圈。
对于速度,要求bikemeter是以英里miles为单位的,表达为miles/hour,且每一秒,即每一个tick()时都要显示出当前速度speed, 即实时更新。为了知道实时的speed,要求采用的方法是知道每次最近4秒钟内的车轮转圈数click() 's。如前面的一系列信号,知道了7秒内的总圈数为10,前三秒内的圈数为2+3+1=6,则最近4个tick内的圈数为10-6=4圈,即这段时间内的click数为4。求最近4秒内的速度即为每秒显示的实时speed。
最后,框架程序还要比较两个bikemeter的累计行驶距离,利用逻辑操作符 <, <=,> ,> =,==以及!=, 如假设a的累计行驶距离比b大,那么bikemeter a > bikemeter b(是要在bikemeter的类中用操作符重载么?我瞎猜的~)
程序要求:完成class bikemeter的相关结构体和函数,并于框架程序结合起来,形成一个完整的程序,并经过主函数中的测试函数测试,能够正确运行
这是已给出的框架程序,
void ride(bikemeter &a, int trip[], int ct);
void mainTest();
void logicalOpsTest();
int main(){
cout < < "Test out the bikemeter class\n ";
mainTest();
logicalOpsTest();
cout < < "End of program\n ";
}
void logicalOpsTest(){
bikemeter a,b;
int trip[]={5,3,2,9,8,2,5,3,6,7};
ride(a,trip,9);
ride(b,trip,10);
cout < < "\n We compare two bikemeters by comparing their distances\n ";
cout < <a < < " <\n " < <b < < ": " < <(a <b) < <endl;
cout < <a < < " > \n " < <b < < ": " < <(a> b) < <endl;
cout < <a < < " <=\n " < <b < < ": " < <(a <=b) < <endl;
cout < <a < < " > =\n " < <b < < ": " < <(a> =b) < <endl;
cout < <a < < " ==\n " < <b < < ": " < <(a==b) < <endl;
cout < <a < < " !=\n " < <b < < ": " < <(a!=b) < <endl;
a.reset();
ride(a,trip,10);
cout < <a < < " <\n " < <b < < ": " < <(a <b) < <endl;
cout < <a < < " > \n " < <b < < ": " < <(a> b) < <endl;
cout < <a < < " <=\n " < <b < < ": " < <(a <=b) < <endl;