请赐教:一个航班程序。请可爱的您进来指点指点。解决思路
请赐教:一个航班程序。请可爱的您进来指点指点。
起飞时间 抵达时间
8:00a.m 10:16 a.m.
11:19p.m 1:31p.m
12:47p.m 3:00p.m
类似于这样的一个航班表,要求输入一个时间,程序选择起飞时间与用户输入最近的航班,显示相应的起飞时间和抵达时间。
我只知道把输入和起飞时间都用从午夜开始的分钟数表示然后比较。但是其他的就没有主意了。请各位指点。
------解决方案--------------------
直接用输入和起飞时间相减, 差值最小的就是最近的
------解决方案--------------------
大概思路如下:
起飞时间 抵达时间
8:00a.m 10:16 a.m.
11:19p.m 1:31p.m
12:47p.m 3:00p.m
类似于这样的一个航班表,要求输入一个时间,程序选择起飞时间与用户输入最近的航班,显示相应的起飞时间和抵达时间。
我只知道把输入和起飞时间都用从午夜开始的分钟数表示然后比较。但是其他的就没有主意了。请各位指点。
------解决方案--------------------
直接用输入和起飞时间相减, 差值最小的就是最近的
------解决方案--------------------
大概思路如下:
- C/C++ code
#include <stdio.h>
#define N 6
int hour[] = {
8, 10, 11, 1, 12, 3
};
int minute[] = {
0, 16, 19, 31, 47, 0
};
int time[N];
void creatTimeTable(int *p)
{
int i;
for (i = 0; i < N; i++)
*p++ = hour[i] * 60 + minute[i];
}
int nearestFlight(int *timeTable, int hour, int minute)
{
int *p = timeTable;
int i;
int time = hour * 60 + minute;
int flag;
int nearest;
nearest = *p;
flag = 0;
for (i = 1; i < N; i++) {
if (time - *p++ < nearest) {
nearest = time;
flag = 1;
}
}
return flag;
}
int
main(void)
{
creatTimeTable(time);
printf("%d\n", nearestFlight(time, 10, 20));
return 0;
}