4 个解决方案
#1
貌似这里只提供帮助,对于求作业的估计......
#2
每求作业啊。。。就想知道这两个功能怎么实现 用什么函数啊
#3
首先从最简单的想法开始
我不清楚电梯怎么和用户扯上关系了,但你可以首先假设“只有在电梯停止运行时,才能进行用户相关的操作”
每隔一段时间执行某个操作,windows下可以使用定时器或者多线程
但对于初学者,我建议你还是从最简单的入手,一点点扩充内容吧,例如,先假设只有一个电梯,在多个楼层同时呼叫的时候该怎样行动,然后再谈模拟电梯实时运行的事
我不清楚电梯怎么和用户扯上关系了,但你可以首先假设“只有在电梯停止运行时,才能进行用户相关的操作”
每隔一段时间执行某个操作,windows下可以使用定时器或者多线程
但对于初学者,我建议你还是从最简单的入手,一点点扩充内容吧,例如,先假设只有一个电梯,在多个楼层同时呼叫的时候该怎样行动,然后再谈模拟电梯实时运行的事
#4
//怎样每隔两秒修改一个变量的值 并且放在程序后台进行。
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>
#include <process.h>
#include <windows.h>
int var1;
CRITICAL_SECTION CS;
struct tm *now;
struct timeb tb;
char datestr[16];
char timestr[16];
char mss[4];
void thdA(void *pcn) {
while (1) {
Sleep(2000);
EnterCriticalSection(&CS);
var1++;
LeaveCriticalSection(&CS);
}
}
int main() {
var1=1;
InitializeCriticalSection(&CS);
_beginthread((void(__cdecl *)(void *))thdA,0,(void *)1);
while (1) {
Sleep(500);
EnterCriticalSection(&CS);
ftime(&tb);
now=localtime(&tb.time);
sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);
sprintf(timestr,"%02d:%02d:%02d",now->tm_hour ,now->tm_min ,now->tm_sec );
sprintf(mss,"%03d",tb.millitm);
printf("%s %s.%s var1==%d\n",datestr,timestr,mss,var1);
if (var1==9) {
LeaveCriticalSection(&CS);
break;
} else {
LeaveCriticalSection(&CS);
}
}
DeleteCriticalSection(&CS);
return 0;
}
//2013-06-19 16:51:02.468 var1==1
//2013-06-19 16:51:02.968 var1==1
//2013-06-19 16:51:03.468 var1==1
//2013-06-19 16:51:03.968 var1==1
//2013-06-19 16:51:04.468 var1==2
//2013-06-19 16:51:04.968 var1==2
//2013-06-19 16:51:05.468 var1==2
//2013-06-19 16:51:05.968 var1==2
//2013-06-19 16:51:06.468 var1==3
//2013-06-19 16:51:06.968 var1==3
//2013-06-19 16:51:07.468 var1==3
//2013-06-19 16:51:07.968 var1==4
//2013-06-19 16:51:08.468 var1==4
//2013-06-19 16:51:08.968 var1==4
//2013-06-19 16:51:09.468 var1==4
//2013-06-19 16:51:09.968 var1==4
//2013-06-19 16:51:10.468 var1==5
//2013-06-19 16:51:10.968 var1==5
//2013-06-19 16:51:11.468 var1==5
//2013-06-19 16:51:11.968 var1==5
//2013-06-19 16:51:12.468 var1==6
//2013-06-19 16:51:12.968 var1==6
//2013-06-19 16:51:13.468 var1==6
//2013-06-19 16:51:13.968 var1==6
//2013-06-19 16:51:14.468 var1==7
//2013-06-19 16:51:14.968 var1==7
//2013-06-19 16:51:15.468 var1==7
//2013-06-19 16:51:15.968 var1==7
//2013-06-19 16:51:16.468 var1==8
//2013-06-19 16:51:16.968 var1==8
//2013-06-19 16:51:17.468 var1==8
//2013-06-19 16:51:17.968 var1==8
//2013-06-19 16:51:18.468 var1==9
//
#1
貌似这里只提供帮助,对于求作业的估计......
#2
每求作业啊。。。就想知道这两个功能怎么实现 用什么函数啊
#3
首先从最简单的想法开始
我不清楚电梯怎么和用户扯上关系了,但你可以首先假设“只有在电梯停止运行时,才能进行用户相关的操作”
每隔一段时间执行某个操作,windows下可以使用定时器或者多线程
但对于初学者,我建议你还是从最简单的入手,一点点扩充内容吧,例如,先假设只有一个电梯,在多个楼层同时呼叫的时候该怎样行动,然后再谈模拟电梯实时运行的事
我不清楚电梯怎么和用户扯上关系了,但你可以首先假设“只有在电梯停止运行时,才能进行用户相关的操作”
每隔一段时间执行某个操作,windows下可以使用定时器或者多线程
但对于初学者,我建议你还是从最简单的入手,一点点扩充内容吧,例如,先假设只有一个电梯,在多个楼层同时呼叫的时候该怎样行动,然后再谈模拟电梯实时运行的事
#4
//怎样每隔两秒修改一个变量的值 并且放在程序后台进行。
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>
#include <process.h>
#include <windows.h>
int var1;
CRITICAL_SECTION CS;
struct tm *now;
struct timeb tb;
char datestr[16];
char timestr[16];
char mss[4];
void thdA(void *pcn) {
while (1) {
Sleep(2000);
EnterCriticalSection(&CS);
var1++;
LeaveCriticalSection(&CS);
}
}
int main() {
var1=1;
InitializeCriticalSection(&CS);
_beginthread((void(__cdecl *)(void *))thdA,0,(void *)1);
while (1) {
Sleep(500);
EnterCriticalSection(&CS);
ftime(&tb);
now=localtime(&tb.time);
sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);
sprintf(timestr,"%02d:%02d:%02d",now->tm_hour ,now->tm_min ,now->tm_sec );
sprintf(mss,"%03d",tb.millitm);
printf("%s %s.%s var1==%d\n",datestr,timestr,mss,var1);
if (var1==9) {
LeaveCriticalSection(&CS);
break;
} else {
LeaveCriticalSection(&CS);
}
}
DeleteCriticalSection(&CS);
return 0;
}
//2013-06-19 16:51:02.468 var1==1
//2013-06-19 16:51:02.968 var1==1
//2013-06-19 16:51:03.468 var1==1
//2013-06-19 16:51:03.968 var1==1
//2013-06-19 16:51:04.468 var1==2
//2013-06-19 16:51:04.968 var1==2
//2013-06-19 16:51:05.468 var1==2
//2013-06-19 16:51:05.968 var1==2
//2013-06-19 16:51:06.468 var1==3
//2013-06-19 16:51:06.968 var1==3
//2013-06-19 16:51:07.468 var1==3
//2013-06-19 16:51:07.968 var1==4
//2013-06-19 16:51:08.468 var1==4
//2013-06-19 16:51:08.968 var1==4
//2013-06-19 16:51:09.468 var1==4
//2013-06-19 16:51:09.968 var1==4
//2013-06-19 16:51:10.468 var1==5
//2013-06-19 16:51:10.968 var1==5
//2013-06-19 16:51:11.468 var1==5
//2013-06-19 16:51:11.968 var1==5
//2013-06-19 16:51:12.468 var1==6
//2013-06-19 16:51:12.968 var1==6
//2013-06-19 16:51:13.468 var1==6
//2013-06-19 16:51:13.968 var1==6
//2013-06-19 16:51:14.468 var1==7
//2013-06-19 16:51:14.968 var1==7
//2013-06-19 16:51:15.468 var1==7
//2013-06-19 16:51:15.968 var1==7
//2013-06-19 16:51:16.468 var1==8
//2013-06-19 16:51:16.968 var1==8
//2013-06-19 16:51:17.468 var1==8
//2013-06-19 16:51:17.968 var1==8
//2013-06-19 16:51:18.468 var1==9
//