华为机试——03操作系统任务调度问题
来源:互联网 发布:淘宝crm软件有哪些 编辑:程序博客网 时间:2024/05/21 17:46
- /*
- 3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,
- 系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。
- 现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。
- 函数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 <iostream>
- using namespace std;
- typedef struct TASKNODE
- {
- int index;
- int value;
- }Task_node;
- void scheduler(int task[], int n, int system_task[], int user_task[])
- {
- Task_node *task_list = new Task_node[n*sizeof(Task_node)];
- Task_node temp;
- int i,j,k;
- for(i = 0;i < n;i++)
- {
- task_list[i].index = i;
- task_list[i].value = task[i];
- }
- //根据优先级排序.
- for(i = 0;i < n-1;i++)
- {
- for(j = i+1;j < n;j++)
- {
- if(task_list[j].value < task_list[i].value)//前者优先级高.
- {
- temp = task_list[i];
- task_list[i] = task_list[j];
- task_list[j] = temp;
- }
- }
- }
- //将任务序号分类存入数组.
- j = k = 0;
- for(i = 0;i < n;i++)
- {
- if(task_list[i].value >= 0 && task_list[i].value < 50)
- {
- system_task[j++] = task_list[i].index;
- }
- else if(task_list[i].value >= 50 && task_list[i].value <= 255)
- {
- user_task[k++] = task_list[i].index;
- }
- else
- continue;
- }
- system_task[j] = -1;
- user_task[k] = -1;
- delete [] task_list;
- //输出归类结果.
- for(int m = 0;m <= j;m++)
- cout << system_task[m] << " ";
- cout << endl;
- for(int m1 = 0;m1 <= k;m1++)
- cout << user_task[m1] << " ";
- }
- int main()
- {
- int task[] = {0,30,155,1,80,300,170,40,99};
- int system_task[10];
- int user_task[10];
- scheduler(task, 9, system_task, user_task);
- return 0;
- }
- /*
- 3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,
- 系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。
- 现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。
- 函数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 <iostream>
- using namespace std;
- typedef struct TASKNODE
- {
- int index;
- int value;
- }Task_node;
- void scheduler(int task[], int n, int system_task[], int user_task[])
- {
- Task_node *task_list = new Task_node[n*sizeof(Task_node)];
- Task_node temp;
- int i,j,k;
- for(i = 0;i < n;i++)
- {
- task_list[i].index = i;
- task_list[i].value = task[i];
- }
- //根据优先级排序.
- for(i = 0;i < n-1;i++)
- {
- for(j = i+1;j < n;j++)
- {
- if(task_list[j].value < task_list[i].value)//前者优先级高.
- {
- temp = task_list[i];
- task_list[i] = task_list[j];
- task_list[j] = temp;
- }
- }
- }
- //将任务序号分类存入数组.
- j = k = 0;
- for(i = 0;i < n;i++)
- {
- if(task_list[i].value >= 0 && task_list[i].value < 50)
- {
- system_task[j++] = task_list[i].index;
- }
- else if(task_list[i].value >= 50 && task_list[i].value <= 255)
- {
- user_task[k++] = task_list[i].index;
- }
- else
- continue;
- }
- system_task[j] = -1;
- user_task[k] = -1;
- delete [] task_list;
- //输出归类结果.
- for(int m = 0;m <= j;m++)
- cout << system_task[m] << " ";
- cout << endl;
- for(int m1 = 0;m1 <= k;m1++)
- cout << user_task[m1] << " ";
- }
- int main()
- {
- int task[] = {0,30,155,1,80,300,170,40,99};
- int system_task[10];
- int user_task[10];
- scheduler(task, 9, system_task, user_task);
- return 0;
- }
0 0
- 华为机试——03操作系统任务调度问题
- 华为机试——03操作系统任务调度问题
- 华为机试——操作系统任务调度问题
- 华为机试—操作系统任务调度
- 【华为机试题】操作系统任务调度问题
- 华为招聘机试整理8:操作系统任务调度问题
- 华为机试练习ex013_cpp之操作系统任务调度问题
- 华为:操作系统任务调度问题
- 华为机试:数组操作系统任务调度
- 华为一道机试题-操作系统任务调度问题
- 【华为上机】操作系统任务调度问题
- [华为机试真题]72.操作系统任务调度问题
- 华为技术——操作系统任务调度问题
- 操作系统任务调度问题
- 操作系统任务调度问题
- 操作系统任务调度问题
- 华为机试题--任务调度问题
- 简易操作系统任务调度问题
- ACM中杨辉三角的多种解法
- HDU 1266 Reverse Number
- uboot配置分析(jz2440开发板)
- mappingResources、mappingLocations、mappingDirectoryLocations、mappingJarLocations区别
- Add two numbers-list,string
- 华为机试——03操作系统任务调度问题
- Ubuntu14.04 安装WineQQ 2013
- LeetCode | Interleaving String(交叉字符串)
- 杂文 ZOJ问题 hdoj 3788
- 设置UITableview 浮动的 header
- android学习---Gallery画廊视图
- FastReport实现自动填充
- handler looper和messageQueue
- Chapter 1- SQL Server 2008 Overview