寒假作业3
2018-02-22 21:27
239 查看
电梯调度升级版
题目
题目描述基础:一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层。电梯移动1层的耗时为1,在某一层停靠的耗时为1(时间初始为0)。为了使得乘客等待的时间(电梯在目的层的停靠时刻 - 乘客发出请求时刻)总和最小,请你编写一个程序来进行电梯调度。本次作业是在上一次的电梯调度的代码上进行改善迭代,不仅加入新的功能,也对程序的输入输出提出了新的要求。
要求
----------
一、 输入从文件读取,输出是写入文件。
大家在学习 C 语言的时候,应该明白了控制台程序的输入和输出。但文件操作往往是之前的课程中被忽略的一个部分,大家有没有试过“如果我要将程序的输出保存下来”、“如果我要从一个文件中获得输入”这些实操的环节呢?如果没有,现在是一个再好不过的学习机会,来吧,learning by doing!
要求:输入输出改成文件输入输出操作。输入文件的文件名为 input.txt 里面保存着输入样例,一个输入为一行,输入的格式见作业的第二条要求。
例如:
0 1 5
2 2 5
程序输出每次对应的决策,每一行的输出格式为 xx时,停靠在x楼。输出在文件名为output.txt的文件中。
二、这次的乘客不再像上一次作业那样只会去顶楼或者是 1 楼了,现在要使我们的程序功能更加贴近现实。
迭代:乘客会前往任意一层,请修改程序代码并实现。自然,输入请求就变为了:每个请求一行,格式为 请求时刻 起始楼层数 去往楼层 。同样,大家也需要自己构造测试样例,让这台“电梯”尽可能好的工作。构造五个输入样例,最后输出完成五个请求(所有乘客都到达目的地)后,各乘客的等待时间总和。输入输出的详细例子可以参加上一次作业的要求。
编程语言选择C或C++都可以,但需要符合编码规范,且必须要有注释。编码规范、注释、git commit 信息,都可以上网搜索写法,学会合理使用搜索引擎来学习是计算机专业学生的必经之路。
github使用教程参考:http://www.cnblogs.com/schaepher/p/5561193.html
思路
引入时间变量time记录总时间,运行到每个点判断向上和向下的请求数并执行较大者(向下的请求数=目标楼层比该楼层低的请求个数+此时电梯下方未上电梯的请求个数,向上的请求数同理。当某一请求的请求时刻>time或已经登上电梯时,该请求不纳入计算。),每次运行到请求点或目的地时再执行判断,直到所有乘客都到达目的地。(红色部分是与上一次电梯编程不一样的地方)。文件输入输出
例1下面是一个简单文件读取程序,首先是写数据,将数字0~9写入到data.txt文件中,然后再从data.txt中读取数据,将读到的数据存到数组a[10]中,并且打印到控制台上。
下面是程序:
#include <stdio.h> int main() { //下面是写数据,将0~9数字写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w"); if(fpWrite==NULL) { return 0; } for(int i=0;i<10;i++) fprintf(fpWrite,"%d ",i); fclose(fpWrite); //下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上 int a[10]={0}; FILE *fpRead=fopen("data.txt","r"); if(fpRead==NULL) { return 0; } for(int i=0;i<10;i++) { fscanf(fpRead,"%d ",&a[i]); printf("%d ",a[i]); } getchar();//等待 return 0; }
例2
用c语言实现读取一个txt文件里的数据 要按行读出来
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE 1024 int main() { char buf[MAX_LINE]; /*缓冲区*/ FILE *fp; /*文件指针*/ int len; /*行字符个数*/ if((fp = fopen("test.txt","r")) == NULL) { perror("fail to read"); exit (1) ; } while(fgets(buf,MAX_LINE,fp) != NULL) { len = strlen(buf); buf[len-1] = '\0'; /*去掉换行符*/ printf("%s %d \n",buf,len - 1); } return 0; }
代码
相关文章推荐
- 一千个人有一千个哈姆雷特——寒假作业4
- 寒假集训作业(4)——字符串
- 寒假汇编语言作业(11)
- 2017《面向对象程序设计》寒假作业一
- 密码(one of 寒假作业)
- 第二次寒假作业的编程题
- FJUT16级第一周寒假作业题解J题
- 寒假作业二汇总
- 第二次寒假作业汇总
- HPUOJ--2017寒假作业-专题0/P-贪心
- HPUOJ--2017寒假作业-专题0/Q-Radar Installation
- 寒假作业(Ⅲ)—— 四则运算的小程序
- HPUOJ---2017寒假作业--专题0/G-Milk
- 列车时刻查询系统(北大青鸟大二寒假作业) 源代码(五)
- 2017面向对象程序设计寒假作业1!
- 2017面向对象程序设计寒假作业2!
- 寒假作业2.1——编程题
- 寒假作业2
- 2018寒假作业2
- 个人寒假作业项目《印象笔记》第一天