求c语言程序,500行左右,要有详细注释。

求c语言程序,500行左右,要有详细注释。,第1张

#include <stdio.h>

#include <windows.h>

#include <stdlib.h>

typedef struct JOB

{

int hour//用于存储输入的时

int min//用于存储输入的分

int ID//记录此作业的号

int requesttime//存储作业所估计运行时间

int runtime//作业周转时间

int cometime//作业进入时间

int finishtime//作业结束时间

int starttime//作业开始时间

float runtime2//带权周转时间

int prior//响应比

}JOB

float counttime1=0//用于存储总的扮早周转时间

float counttime2=0//用于存储总的带权周转时间

int nowtime

int flat=0

int sign=0

void insert(JOB [],JOB)

void FCFS()

void SJF()

void HRN()

void getprior(JOB a,int b)

int getmin(int i)

int gethour(int i)

int trans(int i,int j)

#define N 100

JOB job[N]

JOB wait[N]//用于SJF中存储等待的作业的时间

JOB job2[N]//由于在SJF中不好控制输出时按照作业序号的顺序输出,用一个数组存储

int co=0

int jobnum

void main()

{

int i

printf("输入作业数:\n")

scanf("%d",&i)

jobnum=i

FILE *fp

fp = fopen("in.txt","rb")

if(fp == NULL)

{

printf("Can't open in.txt")

exit(0)

}

for(int j=0j<ij++)

{

fscanf(fp,"%d:%d %d",&job[j].hour,&job[j].min,&job[j].requesttime)

job[j].ID=j+1

job[j].cometime=job[j].hour*60 + job[j].min

printf("%d\n",job[j].requesttime)

}

printf("\n ================================")

printf("\厅基雀n | 1:FCFS 2:SJF|")

printf("\n | 3:HRN |")

printf("\n ================================")

printf("\nPlease select a number from (1,2,3):")

scanf("%d",&i)

switch(i)

{

case 1: FCFS()break

case 2: SJF()break

case 3: HRN()break

}

}

void FCFS()

{

printf("\n\n根据先来先服务算法:锋空\n")

int k

for(int i=0i<jobnum-1i++)//将作业数组按照进入时间先后排序。

{

k=i

for(int j=i+1j<jobnumj++)

{

if(job[j].cometime<job[k].cometime) k=j

}

if(k!=i)

{

JOB a

a=job[k]

job[k]=job[i]

job[i]=a

}

}

for(int i=0i<jobnumi++)

{

if(i==0)//如果是第一个任务

{

job[i].starttime=job[i].cometime

job[i].finishtime=job[i].starttime+job[i].requesttime

job[i].runtime=job[i].finishtime-job[i].cometime

job[i].runtime2=(float)job[i].runtime/(float)job[i].requesttime

counttime1+=job[i].runtime

counttime2+=job[i].runtime2

}

else

{

job[i].starttime=(job[i-1].finishtime>job[i].cometime ? job[i-1].finishtime : job[i].cometime)

job[i].finishtime=job[i].starttime+job[i].requesttime

job[i].runtime=job[i].finishtime-job[i].cometime

job[i].runtime2=(float)job[i].runtime/(float)job[i].requesttime

counttime1+=job[i].runtime

counttime2+=job[i].runtime2

}

}

printf("作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n")

FILE *fp

fp = fopen("FCFS.txt","w")

if(fp==NULL)

{

printf("Can't create file : SJF.txt\n")

exit(0)

}

fprintf(fp,"作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n")

for(int i=0i<jobnum-1i++)//将作业数组按照作业的ID排序

{

k=i

for(int j=i+1j<jobnumj++)

if(job[j].ID<job[k].ID)

k=j

if(k!=i)

{

JOB a

a=job[k]

job[k]=job[i]

job[i]=a

}

}

for(int i=0i<jobnumi++)

{

int a,b,c,d

a=gethour(job[i].starttime)

b=getmin(job[i].starttime)

c=gethour(job[i].finishtime)

d=getmin(job[i].finishtime)

printf("JOB%d ",job[i].ID)

fprintf(fp,"JOB%d ",job[i].ID)

if(job[i].min==0)

{

printf("%d:%d0 ",job[i].hour,job[i].min)

fprintf(fp,"%d:%d0 ",job[i].hour,job[i].min)

}

else

{

printf("%d:%d ",job[i].hour,job[i].min)

fprintf(fp,"%d:%d ",job[i].hour,job[i].min)

}

printf("%11d ",job[i].requesttime)

fprintf(fp,"%11d ",job[i].requesttime)

if(b==0)

{

printf("%d:%d0 ",a,b)

fprintf(fp,"%d:%d0 ",a,b)

}

else

{

printf("%d:%d ",a,b)

fprintf(fp,"%d:%d ",a,b)

}

if(d==0){

printf("%d:%d0 ",c,d)

fprintf(fp,"%d:%d0 ",c,d)

}

else{

printf("%d:%d ",c,d)

fprintf(fp,"%d:%d ",c,d)

}

printf("%11d%11f\n",job[i].runtime,job[i].runtime2)

fprintf(fp,"%13d%13f\n",job[i].runtime,job[i].runtime2)

}

printf("【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum)

fprintf(fp,"【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum)

system("pause")

}

int trans(int i,int j)

{

return i*60 + j

}

int gethour(int i)

{

return i/60

}

int getmin(int i)

{

return i%60

}

void SJF()

{

printf("\n\n根据短作业优先算法:\n")

int k

for(int i=0i<jobnum-1i++)//将作业数组按照进入时间先后排序。

{

k=i

for(int j=i+1j<jobnumj++)

{

if(job[j].cometime<job[k].cometime) k=j

}

if(k!=i)

{

JOB a

a=job[k]

job[k]=job[i]

job[i]=a

}

}

int numbers=jobnum

int realnum=jobnum

for(int i=0i<numbersi++)

{

if(i==0)//假如是第一个,则直接进入cpu进行作业

{

job[i].starttime=job[i].cometime

job[i].finishtime=job[i].starttime+job[i].requesttime

job[i].runtime=job[i].finishtime-job[i].cometime

job[i].runtime2=(float)job[i].runtime/(float)job[i].requesttime

nowtime=job[i].finishtime

counttime1+=job[i].runtime

counttime2+=job[i].runtime2

job2[co++]=job[i]

for(int u=0u<jobnum-1u++)//把第一个从job序列的移除

job[u]=job[u+1]

jobnum--

int j=0

while(job[j].cometime<=nowtime&&j<jobnum)//从剩余的job序列中获取正在等待的job,放进wait序列中

{

wait[flat++]=job[j++]

}

int i=0

if(j!=0)//j!=0则表明已经从job序列中转移了job到wait序列中

{

while(j<jobnum)//将已经转移的job从job序列中移除

{

job[i]=job[j]

i++

j++

}

jobnum=i

}

if(flat>1)//如果wait序列中不止一个等待作业

{

int r

for(int x=0x<flat-1x++)//将等待数组按照估计运行时间先后排序。

{

r=x

for(int y=x+1y<flaty++)

{

if(wait[y].requesttime<wait[r].requesttime)

r=y

}

if(r!=x)

{

JOB a

a=wait[r]

wait[r]=wait[x]

wait[x]=a

}

}

}

}

else

{

if(flat==0)//如果wait序列中没有,即没有等待的序列,则将job序列中的第一个作业放入cpu进行运行

{

job[0].starttime=job[0].cometime

job[0].finishtime=job[0].starttime+job[0].requesttime

job[0].runtime=job[0].finishtime-job[0].cometime

job[0].runtime2=(float)job[0].runtime/(float)job[0].requesttime

nowtime=job[0].finishtime

counttime1+=job[0].runtime

counttime2+=job[0].runtime2

job2[co++]=job[0]

for(int u=0u<jobnum-1u++)//将放入运行的作业从job序列中移除

job[u]=job[u+1]

jobnum--

int j=0

while(job[j].cometime<=nowtime&&j<jobnum)//从剩余的job序列中获取正在等待的job,放进wait序列中

{

wait[flat++]=job[j++]

}

int i=0

if(j!=0)//j!=0则表明已经从job序列中转移了job到wait序列中

{

while(j<jobnum)

{

job[i]=job[j]

i++

j++

}

jobnum=j

}

int r

if(flat>1)//如果wait序列中不止一个等待作业

{

for(int x=0x<flat-1x++)//将等待数组按照估计运行时间先后排序。

{

r=x

for(int y=x+1y<flaty++)

{

if(wait[y].requesttime<wait[r].requesttime) r=y

}

if(r!=x)

{

JOB a

a=wait[r]

wait[r]=wait[x]

wait[x]=a

}

}

}

}

else//否则如果wait序列中有等待作业,则调用wait序列的第一个作业

{

wait[0].starttime=nowtime

wait[0].finishtime=nowtime+wait[0].requesttime

wait[0].runtime=wait[0].finishtime-wait[0].cometime

wait[0].runtime2=(float)(wait[0].runtime)/(float)(wait[0].requesttime)

nowtime=wait[0].finishtime

counttime1+=wait[0].runtime

counttime2+=wait[0].runtime2

job2[co++]=wait[0]

for(int i=0i<flati++)//将wait序列的第一个作业从wait中移除

wait[i]=wait[i+1]

flat--

int j=0

while(job[j].cometime<=nowtime&&j<jobnum)//从剩余的job序列中获取正在等待的job,放进wait序列中

{

wait[flat++]=job[j++]

}

int i=0

if(j!=0)//j!=0则表明已经从job序列中转移了job到wait序列中

{

if(j==1&&jobnum==1)//job序列中最后一个作业已经转移到wait中,则将jobnum自减一到0

jobnum--

else

{

while(j<jobnum)//否则将已转移的作业从job中移除

{

job[i]=job[j]

i++

j++

}

jobnum=j

}

}

int r

if(flat>1)//如果wait里的等待序列多余一个,则进行重新排序

{

for(int x=0x<flat-1x++)//将等待数组按照估计运行时间先后排序。

{

r=x

for(int y=x+1y<flaty++)

{

if(wait[y].requesttime<wait[r].requesttime)

r=y

}

if(r!=x)

{

JOB a

a=wait[r]

wait[r]=wait[x]

wait[x]=a

}

}

}

}

}

}

printf("作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n")

FILE *fp

fp = fopen("SJF.txt","w")

if(fp==NULL)

{

printf("Can't create file : SJF.txt\n")

exit(0)

}

fprintf(fp,"作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n")

for(int i=0i<realnum-1i++)//将作业数组按照作业的ID排序

{

k=i

for(int j=i+1j<realnumj++)

if(job2[j].ID<job2[k].ID)

k=j

if(k!=i)

{

JOB a

a=job2[k]

job2[k]=job2[i]

job2[i]=a

}

}

for(int i=0i<realnumi++)

{

int a,b,c,d

a=gethour(job2[i].starttime)

b=getmin(job2[i].starttime)

c=gethour(job2[i].finishtime)

d=getmin(job2[i].finishtime)

printf("JOB%d ",job2[i].ID)

fprintf(fp,"JOB%d ",job2[i].ID)

if(job2[i].min==0)

{

printf("%d:%d0 ",job2[i].hour,job2[i].min)

fprintf(fp,"%d:%d0 ",job2[i].hour,job2[i].min)

}

else

{

printf("%d:%d ",job2[i].hour,job2[i].min)

fprintf(fp,"%d:%d ",job2[i].hour,job2[i].min)

}

printf("%11d ",job2[i].requesttime)

fprintf(fp,"%11d ",job2[i].requesttime)

if(b==0)

{

printf("%d:%d0 ",a,b)

fprintf(fp,"%d:%d0 ",a,b)

}

else

{

printf("%d:%d ",a,b)

fprintf(fp,"%d:%d ",a,b)

}

if(d==0){

printf("%d:%d0 ",c,d)

fprintf(fp,"%d:%d0 ",c,d)

}

else{

printf("%d:%d ",c,d)

fprintf(fp,"%d:%d ",c,d)

}

printf("%11d%11f\n",job2[i].runtime,job2[i].runtime2)

fprintf(fp,"%13d%13f\n",job2[i].runtime,job2[i].runtime2)

}

printf("【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/realnum,counttime2/realnum)

fprintf(fp,"【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/realnum,counttime2/realnum)

system("pause")

}

void HRN()

{

co=0

printf("\n\n根据最高响应比优先算法:\n")

int k

for(int i=0i<jobnum-1i++)//将作业数组按照进入时间先后排序。

{

k=i

for(int j=i+1j<jobnumj++)

{

if(job[j].cometime<job[k].cometime) k=j

}

if(k!=i)

{

JOB a

a=job[k]

job[k]=job[i]

job[i]=a

}

}

nowtime=job[0].cometime

for(int i=0i<jobnumi++)

{

int j=i

int xx=i

while(j++<jobnum)//依次求得未完成的作业的优先级

job[j].prior=1+(float)(nowtime-job[j].cometime)/job[j].requesttime

int k

for(int i=xxi<jobnum-1i++)//将作业数组按照响应比由高到低排序。

{

k=i

for(int j=i+1j<jobnumj++)

{

if(job[j].prior>job[k].prior) k=j

}

if(k!=i)

{

JOB a

a=job[k]

job[k]=job[i]

job[i]=a

}

}

if(job[i].prior>=1)//有等待的则让等待的开始时间等于现在时间

job[i].starttime=nowtime

else

job[i].starttime=job[i].cometime//没有等待的作业的话就让下一次第一个进入的工作的时间当作其开始时间并且赋给当前时间

job[i].finishtime=job[i].starttime+job[i].requesttime

job[i].runtime=job[i].finishtime-job[i].cometime

job[i].runtime2=(float)job[i].runtime/job[i].requesttime

nowtime=job[i].finishtime

counttime1+=job[i].runtime

counttime2+=job[i].runtime2

job2[co++]=job[i]

}

printf("作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n")

FILE *fp

fp = fopen("HRN.txt","w")

if(fp==NULL)

{

printf("Can't create file : SJF.txt\n")

exit(0)

}

fprintf(fp,"作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n")

for(int i=0i<jobnum-1i++)//将作业数组按照作业的ID排序

{

k=i

for(int j=i+1j<jobnumj++)

if(job2[j].ID<job2[k].ID)

k=j

if(k!=i)

{

JOB a

a=job2[k]

job2[k]=job2[i]

job2[i]=a

}

}

for(int i=0i<jobnumi++)

{

int a,b,c,d

a=gethour(job2[i].starttime)

b=getmin(job2[i].starttime)

c=gethour(job2[i].finishtime)

d=getmin(job2[i].finishtime)

printf("JOB%d ",job2[i].ID)

fprintf(fp,"JOB%d ",job2[i].ID)

if(job2[i].min==0)

{

printf("%d:%d0 ",job2[i].hour,job2[i].min)

fprintf(fp,"%d:%d0 ",job2[i].hour,job2[i].min)

}

else

{

printf("%d:%d ",job2[i].hour,job2[i].min)

fprintf(fp,"%d:%d ",job2[i].hour,job2[i].min)

}

printf("%11d ",job2[i].requesttime)

fprintf(fp,"%11d ",job2[i].requesttime)

if(b==0)

{

printf("%d:%d0 ",a,b)

fprintf(fp,"%d:%d0 ",a,b)

}

else

{

printf("%d:%d ",a,b)

fprintf(fp,"%d:%d ",a,b)

}

if(d==0){

printf("%d:%d0 ",c,d)

fprintf(fp,"%d:%d0 ",c,d)

}

else{

printf("%d:%d ",c,d)

fprintf(fp,"%d:%d ",c,d)

}

printf("%11d%11f\n",job2[i].runtime,job2[i].runtime2)

fprintf(fp,"%13d%13f\n",job2[i].runtime,job2[i].runtime2)

}

printf("【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum)

fprintf(fp,"【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum)

system("pause")

}

作业调度

#include <iostream>

#include <stdio.h>

#include <string>

//#include <windows.h>

using namespace std

//hyugtyftydrtdtrdrrtrdrt

struct Node

{

string name//进程(作业)名称

int arriveTime//到达时族燃间

int ServerTime//服务时间

int leftTime//the left time

Node *link//指向下一个节点的指针

}

class CProcess

{

public:

CProcess()//构造函数

~CProcess()//析构函数

const CProcess &operator =(const CProcess&p)//重载赋值 *** 作符

void insertNode(string &na,int&at,int&st)//插入新元素(at由小到大)到链表合适的位置

void sort()//按照服务时间由大到小排序

bool isEmpty()//判断是否为空

void destroy()//销毁

int length()//求出改哗链表长度

void print()//打印出元素

void FCFS()//先到先服务

void SJF()//短进程(作业)优先

void RR(int&q)//时间片轮转

void priority()//优先权调度

protected:

Node *first

Node *last

}

const CProcess&CProcess::operator=(const CProcess&p)

{

Node *newNode

Node *Current

if(this!=&p)//避免自己给自己赋值

{

if(first!=NULL)//如果链表不为空

destroy()

if(p.first==NULL)

{//如果要拷贝的对象为空

this->first = NULL

this->兆歼虚last = NULL

}

else

{

Current = p.first

first= new Node

first->name=Current->name//

first->arriveTime=Current->arriveTime

first->ServerTime=Current->ServerTime

first->link =NULL

last =first

Current = Current->link

while(Current!=NULL)

{

newNode = new Node

newNode->name=Current->name

newNode->arriveTime=Current->arriveTime

newNode->ServerTime=Current->ServerTime

newNode->link=NULL

last->link=newNode

last=newNode

Current = Current->link

}

}

}

return *this

}

CProcess::CProcess()

{//构造函数

first=NULL

last=NULL

}

CProcess::~CProcess()

{

Node *temp

while(first!=NULL)

{

temp=first

first=first->link

delete temp

}

last=NULL

}

void CProcess::insertNode(string &na,int&at,int&st)

{//按照到达时间升序排序

Node *Current

Node *trailCurrent//指向Current的前一个节点

Node *newNode

bool found

newNode = new Node//建立一个新节点

newNode->name=na

newNode->arriveTime=at

newNode->ServerTime=st

newNode->link=NULL//

if(first==NULL)//如果第一个节点为空(如果是第一次插入元素)

first=newNode//将新节点赋给第一个节点

else

{//如果不是第一次

Current =first

found = false

while(Current!=NULL &&!found)

{

if(Current->arriveTime >= at)

found = true

else

{

trailCurrent = Current

Current = Current->link

}

}

if(Current==first)

{

newNode->link = first

first = newNode

}

else

{

trailCurrent->link = newNode

newNode->link = Current

}

}

}

int CProcess::length()

{

int count =0//声明变量,并初始化为0(用来记录长度)

Node *Current

Current = first

while(Current!=NULL)//当前节点不为空,记录值自加,一直向后遍历,

{

count++

Current = Current->link

}

return count//返回长度

}

void CProcess::sort()//按照服务时间,升序排列

{//冒泡排序

string sname

int at

int st

Node *Current//指向当前节点

Node *trailCurrent//指向当前节点的前一个节点

for(trailCurrent=first->linktrailCurrent!=NULLtrailCurrent=trailCurrent->link)//控制条件有问题

{

for(Current=trailCurrent->linkCurrent!=NULLCurrent=Current->link)//控制条件有问题

{

if(trailCurrent->ServerTime >Current->ServerTime)

{

sname=trailCurrent->name

at=trailCurrent->arriveTime

st=trailCurrent->ServerTime

trailCurrent->name=Current->name

trailCurrent->arriveTime=Current->arriveTime

trailCurrent->ServerTime=Current->ServerTime

Current->name=sname

Current->arriveTime=at

Current->ServerTime=st

}

}

}

}

bool CProcess::isEmpty()//判断是否为空

{

return (first==NULL)//如果第一个节点为空,返回值

}

void CProcess::print()

{

Node *Current

Current = first->link//头节点赋给当前节点

while(Current!=NULL)//当前节点不为空,一直向后遍历打印

{

cout<<Current->name<<" "

cout<<Current->arriveTime<<" "

cout<<Current->ServerTime<<"\n"

Current = Current->link

}

}

void CProcess::destroy()

{

Node *temp//定义一个临时指针变量

while(first!=NULL)

{

temp=first

first=first->link

delete temp

}

last=NULL

}

void CProcess::FCFS()//先到先服务

{

Node *Current

int T0=0//完成时间

int T1=0//周转时间

Current = first->link//头节点赋给当前节点

while(Current!=NULL)

{

if(T0 <Current->arriveTime)

{

T0=Current->arriveTime+Current->ServerTime

T1=T0-Current->arriveTime

cout<<Current->name<<"\t"//打印出进程名

cout<<T0<<"\t"//打印出完成时间

cout<<T1<<"\n"//打印出周转时间

Current = Current->link

}

else

{

T0=Current->ServerTime+T0

T1=T0-Current->arriveTime//周转时间等于,完成时间 - 到达时间

cout<<Current->name<<"\t"//打印出进程名

cout<<T0<<"\t"//打印出完成时间

cout<<T1<<"\n"//打印出周转时间

Current = Current->link

}

}

}

void CProcess::SJF()//短进程(作业)优先

{

//首先执行第一个到达的作业

Node *Current

int T0=0//完成时间

int T1=0//周转时间

T0=first->link->ServerTime+T0

T1=T0-first->link->arriveTime

cout<<first->link->name<<"\t"

cout<<T0<<"\t"//打印出完成时间

cout<<T1<<"\n"//打印出周转时间

first->link=first->link->link//删除

//执行剩下的

sort()//对剩下的排序

Current = first->link//头节点赋给当前节点

while(Current!=NULL)

{

if(T0 <Current->arriveTime)

{

T0=Current->arriveTime+Current->ServerTime

T1=T0-Current->arriveTime

cout<<Current->name<<"\t"//打印出进程名

cout<<T0<<"\t"//打印出完成时间

cout<<T1<<"\n"//打印出周转时间

Current = Current->link

}

else

{

T0=Current->ServerTime+T0

T1=T0-Current->arriveTime//周转时间等于,完成时间 - 到达时间

cout<<Current->name<<"\t"//打印出进程名

cout<<T0<<"\t"//打印出完成时间

cout<<T1<<"\n"//打印出周转时间

Current = Current->link

}

}

}

void CProcess::RR(int&q)//时间片轮转

{

cout<<"时间片轮转 *** 作完成!\n"

}

void CProcess::priority()//优先权调度

{

cout<<"优先权 *** 作完成!\n"

}

void main()

{

CProcess p0,p1,p2,p3,p4

int at,st

string na

int judge=1//控制退出程序

int choice//控制选择 *** 作

while(judge)

{

cout<<"********************************************************\n"

cout<<"****** 说明:本程序适用于单道进程(作业) ******\n"

cout<<"******** 请选择您的 *** 作 ***************\n"

cout<<"*********输入相应的数字,按下(Enter)键!**************\n"

cout<<"************* 5.录入信息************\n"

cout<<"************* 1.先到先服务 ************\n"

cout<<"************* 2.短进程(作业)优先 ************\n"

cout<<"************* 3.时间片轮转 ************\n"

cout<<"************* 4.优先权(静态)调度************\n"

cout<<"************* 0.退出程序************\n"

cout<<"********************************************************\n"

cin>>choice

switch(choice)

{

case 0:

judge=0

break

case 5:

cout<<"请输入信息以“end”结束输入!\n"

cout<<"进程名 到达时间 服务时间"<<endl

while(na.compare("end"))//如果相等则会返回0

{

p0.insertNode(na,at,st)

cin>>na>>at>>st

}

cout<<"录入成功,目前的信息为:\n"

cout<<"进程名 到达时间 服务时间"<<endl

p0.print()

break

case 1://先到先服务

p1=p0//拷贝一份

if(p1.isEmpty())

{

cout<<"请先录入信息\n"

break

}

else

{

cout<<"先到先服务\n"

cout<<"进程名 完成时间 周转时间\n"

p1.FCFS()

break

}

case 2://短作业优先

p2=p0//拷贝一份

//p2.sort()

//p2.print()

if(p2.isEmpty())

{

cout<<"请先录入信息\n"

break

}

else

{

cout<<"短作业优先\n"

cout<<"进程名 完成时间 周转时间\n"

p2.SJF()

break

}

case 3://时间片轮转

p3=p0//拷贝一份

int q

if(p3.isEmpty())

{

cout<<"请先录入信息\n"

break

}

else

{

cout<<"请输入时间片大小"

cin>>q

cout<<"时间片轮转\n"

cout<<"进程名 完成时间 周转时间\n"

p3.RR(q)

break

}

case 4://优先权

p4=p0//拷贝一份

if(p4.isEmpty())

{

cout<<"请先录入信息\n"

break

}

else

{

cout<<"时间片轮转\n"

cout<<"进程名 完成时间 周转时间\n"

p4.priority()

break

}

default:

cout<<"请选择目录中的选项!\n"

break

}

}

return

}

万能的vba

还是写个滴定义函数吧,返回一个字符串,分割符用半角逗号。代码如下:

Function SJF(A As Integer) As String

 '设定一个循环次数100,如果查找100次未找到满足条件的,则汪和烂返回空值

 Const maxCS = 100 '最大循环次数

 Dim jgArr(1 To 4) As Integer

 Dim mySum As Integer

 Dim xhCs As Integer

 Dim SYZ As Integer

 xhCs = 1: SJF = ""

 Do While xhCs <= maxCS

 SYZ = A

 For I = 1 To 4

    Select Case I

    Case 1, 2

       jgArr(I) = Int(Rnd * 10 + 1)

    Case 3

       jgArr(I) = Int(Rnd * 20)

    Case 4

       jgArr(I) = Int(Rnd * 30)

    End Select

    SYZ = SYZ - jgArr(I)

 Next I

 If SYZ >= 0 And SYZ <= 30 Then

    For I = 1 To 4

       SJF = SJF &jgArr(I) &","棚迅

    Next I

    SJF = SJF &SYZ

    Exit Do

 End If

 xhCs = xhCs + 1

 Loop

End Function

运行结困漏果如图:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12275619.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存