public class CLSS_ch2 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 10 == 3)
continue;
sum += i;
}
Systemoutprintln(sum);
}
}
计算机图形技术组的成员在1993年开发出了 Lua。它被设计成为脚本语言,是一种不可获取的过程式编程语言,以简单而强大而闻名。
/建立一座两层楼,一部电梯的模拟程序。为简化起见,每部电梯限乘一人,电梯每天在一楼关门等待
模拟程序包括一个时钟,每天从零开始。模拟程序得调度器组件随机设置每一层第一个人到来的时间,当时钟的时间等于第一个人到来的时间时,模拟程序生成一个新到的人将该人放到这一层。然后这个人按下按钮,请求电梯开门。这个人的目的地楼层不能与他上电梯的楼层相同。
如果第一个人到达第一层,则可以在按下按钮、等待电梯开门之后立即进入电梯。如果第一个人在第2层,则电梯要升到第2层去接他。电梯从1层移到2层需要5秒。
电梯到达一层时,打开电梯门上的灯,并在电梯内发出铃声,该层的按钮和电梯中表示该层的按钮复位,电梯门打开,乘客走出电梯(如果有到该层的乘客)。另一乘客(如果该层有人等待)进入电梯按下目的层按钮,电梯们关上。电梯移动前确定移动方向(两层很容易判断),为简单起见,电梯到达一层直到关门所花时间为0。
任何时间每层最多只能有一人等待,如果新到的人(不在电梯中)要到达该层时该层被占用,则一秒后才能安排新到达者。假设每隔5到20秒人们随机到达每层/
#include < iostream >
#include < ctime >
#include < iomanip >
#include < string >
#include <stdlibh>
#include < windowsh >
using namespace std;
class person
{
public:
string sex; //定义人员类
person();
void newset();
};
person::person()
{ sex="man"; }
void person::newset()
{
int i;
srand((unsigned)time(NULL));
for(i=0;;i++)
{
if(rand()==1)
{sex="man"; break; }
if(rand()==2)
{sex="woman"; break; }
}
}
class elevator
{
public:
int now; //定义电梯类
elevator();
};
elevator::elevator()
{ now=1; }
class Time
{
public:
static void outtime() //定义时间类,用于输出电梯每次运行时的时间
{
SYSTEMTIME t;
GetLocalTime(& t);
cout<<" //"<<twYear<<""<<twMonth<<""<<twDay<<" "<<twHour<<":"<<twMinute<<":"<<twSecond<<endl;
}
};
void last(long n) //用于等待时输出的函数
{
long i;
i=n/500;
for(i=0;i<n/500;i++)
{
cout<<''; Sleep(500);
}
cout<<endl;
}
void waiting()
{ long m; //模拟随机等待的时间函数
srand((unsigned)time(NULL));
cout<<"elevator waiting";
for(int i=0;i<1000;i++)
m=rand()%(20000-5000+1)+5000;
last(m);
}
void output(long t,person & p,elevator & e) //电梯模拟函数
{
static n=1; //定义乘客的个数
if( t==1) //有人在一楼按铃
{
pnewset();
if(enow!=1) //但是此时电梯停留在二楼
{
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrived floor 1"; //输出有人到达一楼
Time::outtime(); //输出此时的准确时间
cout<<"elevator running";
last(5000);
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") enters elevator"; //输出乘客进入电梯
Time::outtime(); //输出此时的准确时间
cout<<"elevator running";
last(5000);
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrives floor 2"; //输入乘客到达二楼
Time::outtime(); //输出此时的准确时间
enow=2;
n++;
system("color 0C"); waiting(); system("color 0F");
}
else //此时电梯就是一楼
{
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrives floor 1"; //输出有人到达一楼
Time::outtime(); //输出此时的准确时间
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") enters elevator"<<endl;
cout<<"elevator running";
last(5000);
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrives floor 2";
Time::outtime();
enow=2;
n++;
system("color 0C"); waiting(); system("color 0F");
}
}
if(t==2) //有人在二楼按铃
{
if(enow!=2) //但是电梯此时不在二楼
{
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrived floor 2";
Time::outtime();
cout<<"elevator running";
last(5000);
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") enters elevator";
Time::outtime();
cout<<"elevator running";
last(5000);
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrives floor 1";
Time::outtime();
enow=1;
n++;
system("color 0C"); waiting(); system("color 0F");
}
else //此时电梯就是二楼
{
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrives floor 2";
Time::outtime();
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") enters elevator";
Time::outtime();
cout<<"elevator running";
last(5000);
cout<<"person "<<n<<"(a "<<setw(5)<<psex<<") arrives floor 1";
Time::outtime();
enow=1;
n++;
system("color 0C"); waiting(); system("color 0F");
}
}
}
int main()
{
coutfill('');
cout<<setw(80)<<'';
coutfill(' ');
system("color 0C");
cout<<setw(50)<<"欢迎使用电梯模拟程序"<<endl; //输出头菜单
coutfill('');
cout<<setw(80)<<'';
coutfill(' ');
int i;
person p;
elevator e;
srand((unsigned)time(NULL)); //定义随机数种
waiting();
system("color 0F");
for(i=0;;i++)
output(rand(),p,e); //调用电梯模拟函数
return 0;
}
参考一下吧。可能有一些错误,但这种想法是完全正确的。
优先级调度算法:
的#include“stdioh中”
包括“stdlibh中”
“stringh中”
typedef结构节点BR /> {
字符名称[10]; / 进程标识符 /
诠释PRIO; / 进程的优先级号码 /
int的圆; / 处理时间的旋转时间片 /
诠释CPUTIME; / 进程的CPU时间 /
诠释needtime; / 进程还需要时间来完成 /
诠释计数; / 计数器 /
字符状态; / 进程状态 /
结构节点下; / 链指针 /
} PCB;
PCB 完成准备好了,尾巴运行/ 队列指针 /
整数N; / 进程数 /
/ 将就绪队列中的投入运行/
firstin的第一道工序,()
运行做好了准备; / 就绪队列的头指针分配给正在运行的头指针 /
运行状态='R'/ 进程的状态更改为运行状态 /
准备准备>下; / 准备加工后移动到下一列头指针 /
}
/ 标题输出功能 /
无效PRT1(字符) BR /> {
(TOUPPER()=='P')/ 优先数的方法 /
printf的(“名称的CPU时间needtime优先状态\ n”);
其他 BR />输出(“名CPUTIME needtime数轮状态\ N”);
}
/ 进程PCB输出 /
无效PRT2(CHAR一,PCB Q)
> {
(TOUPPER()=='P')/ 输出优先数 /
printf的(“%10%-10D%-10D - 10D%C \ N”, Q->名称,
Q-> CPU时间,Q-> needtime,Q-> PRIO,Q->状态);
其他/ 旋转法输出 /
printf(“请% 10%10D%-10D%-10D-10D-C \ n“,Q->名称,
Q-> CPU时间,Q-> needtime,Q->计数,Q->轮, Q->状态);
}
/ 输出函数 /
无效PRT(炭算法)
{
PCB p;
PRT1 (算法); / 输出头 /
(run! = NULL)/ 如果你运行的指针不为空 /
PRT2(算法,运行); / PCB输出电流运行 /
P =准备; / 输出就绪队列PCB /
(p! = NULL)
{
PRT2(算法,P);
p =>下;
}
P =完成; / 输出完成队列PCB /
(p! = NULL)
{
PRT2(算法,P);
P = P->下;
}
的getch(); / 按任意键继续 /
}
/ 优先数量的插入算法/
insert1(PCB Q)
{
PCB P1, S R;
INT B;
= Q; / 的PCB指针,是要插入 /
P1 =准备; / 就绪队列的头指针 /
R = P1; / R P1前体的指针 /
B = 1;
((p1! = NULL)&& B)/ 优先数来确定插入的位置 /
(P1-> PRIO = S-> PRIO)
{
R = P1;
P1 = P1->下;
}
其他
B = 0;
(r! = P1)/ 如果条件成立之间插入R和P1 /
{
R->下;
S-> = P1;
}
其他
{
S-> = P1; / 否则插入就绪队列中的头 /
准备;
}
}
/ 的轮转插入功能 /
insert2(PCB P2)
{
尾巴 - > = P2; / 新的PCB插入在当前的就绪队列尾部 /
尾= P2;
P2->下一个= NULL;
}
/ 创建初始PCB信息优先数 /
无效create1 (CHAR ALG)
{
PCB p;
我的时间;
字符不适用10];
准备= NULL; / 就绪队列的头指针 /
完成= NULL; / 完成队列的头指针 /
“运行=”NULL; / 运行队列的指针。 /
printf的(“请输入名称和时间的流程\ n”); / 输入进程ID和所需要的时间创建一个PCB /
为(i = 1; <= N; + +)
{
p =的malloc(sizeof(PCB)的);
scanf的(“%s”的,NA);
scanf的(“%d的,与时间);
使用strcpy(P->名称,NA);
P-> CPU时间= 0;
P-> needtime的=时间;
P->状态='W'
P-> PRIO = 50;
如果(ready! = NULL)/ 就绪队列是没有空调的插入功能插入 /
insert1(P); BR />其他
{
P-> =准备就绪; / 创建一个就绪队列PCB /
准备=;
}
} <BR / clrscr();
printf(“请优先输出:\ n”);
printf(“请 \ n“);
PRT(ALG); / 输出过程PCB / />运行=准备就绪; / 就绪队列的处理 *** 作 /
准备=准备就绪 - >下;
运行 - >状态='R';
}
/ 旋转的方法来创建进程PCB /
的无效create2(字符ALG)
{
PCB p;
我,时间;
字符娜[10] ;
准备好= NULL;
完成= NULL;
运行= NULL;
printf的(“输入姓名和时间的圆化处理\ n”);
(我= 1 <= N + +)
{
P =的malloc(sizeof(PCB)的);
scanf函数(“%s”,NA)</ scanf函数(“%d”,&时间);
使用strcpy(P->名称,NA); P-> CPU时间= 0;
p->的needtime时间;
> P->计数= 0; / 计数器 /
的p-state ='W';
P->圆= 2; / 时间片 /
(准备好了!= NULL)
insert2(P);
其他
{
P-> =准备就绪;
准备=;
尾= P
}
}
clrscr();
printf(“请输出轮\ n”);
printf的(“ \ n“);
PRT (ALG); / 输出过程PCB信息 /
运行准备; / 队列的过程将在地方并投入运行 /
准备准备下;
>运行 - >状态='R';
}
/ 的优先级调度算法 /
优先(字符ALG)
{
而(跑!= NULL)/ 当运行队列不为空,正在运行的进程 /
运行 - > CPU时间=运行 - > CPUTIME +1;
运行> needtime运行 - > needtime-1;
运行 - > PRIO =运行 - > PRIO-3; / 每次的运行优先级降低3个单位的数量 /
(运行 - > needtime == 0)/ 如果已完成0插入队列 /
{
运行 - >下=完成;
完成运行;
运行所需的时间 - >状态='F'; / 设置状态来完成的状态 /
运行= NULL; / 运行队列的头指针是空 /
(ready! = NULL)/ 如就绪队列不为空 /
firstin(); / 将制定一个过程,列 *** 作 /
}
/ 没有运行完成,而给优先数是不是最大的,然后把它变成就绪状态,插入就绪队列 /
((ready! = NULL)&&(运行 - > PRIO PRIO))
{
运行状态='W';
insert1(运行);
firstin(); / 就绪队列的第一个进程运行 /
>}
PRT(ALG); / 输出过程PCB信息 /
}
}
/ round-robin方法 /
roundrun(CHAR ALG)
{
(run! = NULL)
{
运行 - > CPU时间=运行 - > CPUTIME +1;
运行 - > needtime =运行 - > needtime -1;
运行计数运行计数+1;
(运行 - > needtime == 0)/ 运行后把它变成一个完整的状态,插入完成队列 /
{全部
运行 - >下=完成;
完成运行;
运行状态='F';
运行= NULL
(ready! = NULL)
firstin(); / 准备列不为空,第一道工序的 *** 作 /
}
其他
(运行 - >数==运行 - >圆)/ 如果时间片 /
{
运行 - >计数= 0; / 计数器设置为0 /
(ready! = NULL)/ 就绪队列不空 /
{
运行状态='W'; / 将其插入就绪队列中等待旋转 / /> insert2(运行);
firstin(); / 将准备投入列正在运行的进程 /
}
}
PRT(ALG) / 输出过程的信息 /
}
}
/ 主函数 /
()
{
字符算法; / 算法标记 /
Clrscr();
printf的(“类型的算法:P / R(优先/ ROUNDROBIN)\ n”); scanf的(“%c”的算法); / 输入字符确定算法 /
printf的(“请输入进程号\ n”);
scanf的(“%d”,&N); / 输入的进程数 / BR />(算法=='P'| |算法=='P')
{
create1(算法); / 优先数 /
优先级(算法);
}
其他
(算法=='R'| |算法=='R')
{
create2(算法); / 一轮循环 /
roundrun(算法);
}
}赞同26 |评论
试试这个,以前我编的时间片轮转
#include<iostreamh>
typedef struct node
{
char name [10];
struct node next;
int needtime;
int servetime;
char state;
};
void IniPCB(int n,node &head,node &finish)
{
node ready=new struct node;
ready=NULL;
for(int i=0;i<n;i++)
{
node p=new struct node;
cout<<"输入进程名:";
cin>>p->name;
cout<<"输入进程需要运行的时间:";
cin>>p->needtime;
p->servetime=0;
p->state='R';
if(ready==NULL)
{
ready=p;
head=p;
}
else
{
ready->next=p;
ready=p;
}
finish=p;
}
finish->next=head;
}
void DoPCB(int n,node &head,node &finish,node &run)
{
run=head;
bool end=0;
node check=new struct node;
cout<<"执行结果如下:"<<endl;
cout<<"进程名"<<" "<<"运行时间"<<" "<<"需要时间"<<" "<<"状态"<<endl;
for(int j=0;j<n;j++)
{
cout<<" "<<head->name<<" "<<head->servetime<<" "<<head->needtime<<" "<<head->state<<endl;
head=head->next;
}
cout<<endl;
int count=0;
while(end!=1)
{
if(run->state=='R')
{
(run->servetime)++;
if((run->servetime)==(run->needtime))
{
run->state='E';
}
count++;
cout<<"第"<<count<<"个时间片:"<<endl;
head=finish->next;
for(int k=0;k<n;k++)
{
cout<<" "<<head->name<<" "<<head->servetime<<" "<<head->needtime<<" "<<head->state<<endl;
head=head->next;
}
cout<<endl;
}
check=run;
for(int x=0;x<n;x++)
{
if(check->state=='E')
check=check->next;
}
if(check==run&&run->state=='E')
{
end=1;
}
run=run->next;
}
}
void main()
{
cout<<"输入进程个数:";
int n;
cin>>n;
node run=new struct node;
node head=new struct node;
node finish=new struct node;
run=NULL;
head=NULL;
finish=NULL;
IniPCB(n,head,finish);
DoPCB(n,head,finish,run);
}
以上就是关于Java调度算法 来个大神写程序 选择一个调度算法,实现处理器调度。全部的内容,包括:Java调度算法 来个大神写程序 选择一个调度算法,实现处理器调度。、求一个电梯的调度管理程序,c++的、求大师帮忙用C#语言写个程序:可视化 作业调度模拟( 短作业优先算法实现)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)