华为机试操作系统任务数组

来源:互联网 发布:关于淘宝店铺认知 编辑:程序博客网 时间:2024/05/16 16:18

操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 50,用户任务的优先级 >= 50 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为ntask中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。
例如:task[] 

{0, 30, 155, 1, 80, 300, 170, 40, 99}

system_task[] {0, 3, 1, 7, -1}    user_task[] {4, 8, 2, 6, -1}

函数接口    void scheduler(int task[], int n, int system_task[], int user_task[]) 

#include
using namespace std;
void sort(int a[],int n)
{
int i=0,j=0,temp;
for(;i
for(j=0;j
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
void scheduler(int task[], int n, int system_task[], intuser_task[])
{
int i,sys_count=0,u_count=0;
for(i=0;i
{
if(task[i]<50)
system_task[sys_count++]=task[i];
else if(task[i]>=50&&task[i]<=255)
user_task[u_count++]=task[i];
}
system_task[sys_count]=-1;
user_task[u_count]=-1;
sort(system_task,sys_count);
sort(user_task,u_count);
int j;
for(j=0;j
for(i=0;i
{
if(system_task[j]==task[i])
{
system_task[j]=i;
break;
}
}
for(j=0;j
for(i=0;i
{
if(user_task[j]==task[i])
{
user_task[j]=i;
break;
}
}
}
void main()
{
int task[]={0, 30, 155, 1, 80, 300, 170, 40, 99,33,50};
int n=sizeof(task)/sizeof(int)+1;
int *system_task=new int[n];
int *user_task=new int[n];
scheduler(task,n-1,system_task,user_task);
int i=0;
cout<<"系统数组为"<<endl;
while(system_task[i]!=-1)
cout<<system_task[i++]<<" ";
i=0;
cout<<"用户数组为"<<endl;
while(user_task[i]!=-1)
cout<<user_task[i++]<<" ";
cout<<endl;
}
原创粉丝点击