1、00这种形式的数据的加减乘除运算和比较运算, 五、数据结构设计1.时间类class time public: time(int x = 0, int y = 0) time:hour = x;minute = y; time& operator = (const time &t1) this-hour=t1.hour;minute=t1.minute; return *this; time operator + (time t2) int minutes,hours; minutes = (minute + t2.minute) % 60; hours=hour+t2.hour+ (minut
2、e + t2.minute) /60; return time(hours,minutes); time operator -(time t2) int minutes,hours; minutes =minute - t2.minute; if (minute0) minutes += 60; hour-; hours = hour - t2.hour; friend bool operator (time t1, time t2) if (t1.hour t2.hour) return true; else if(t1.hour=t2.hour) if (t1.minute = t2.mi
3、nute) return true; return false; friend ostream& operator (ostream& out, const time &t1) return out t1.hour (istream &in, time & int h, m; scanf(%d:%d, &h,&m); t1.hour = h; t1.minute = m; return in; int hour; int minute; 2.作业内容typedef struct JOB char name20;/Job name time in_time; int run_time; time
4、 st_time; time end_time; int round_time;/周转时间 int wait_time; double rounds_time;/带权周转 double reson_radio;/响应比job; 六、流程图七、源代码#includestdlib.hstring.hiostreamusing namespace std;double sum_time;/全部作业周转时间和double sums_time;/全部作业带权周转时间和int n;/job counts/重载 maxtime maxn(time t1, time t2) if(t1.hourt2.hour
5、) return t1; else if(t1.hour=t2.hour) if (t1.minute return t1; return t2;/eg: 120转化成 2:time m_exchange_h(int run_time) time run; run.hour = run_time / 60; run.minute = run_time % 60; return run;/eg: 2:0 转化成 120int h_exchange_m(time t1) return t1.hour * 60 + t1.minute;/先来先服务;void job_input(job *x) co
6、ut 作业t进入时间t估计运行时间(分钟)t开始时间t结束时间t周转时间(分钟)t带权周转时间 endl; for (int i = 0; i n; i+) cout xi.name t xi.in_timett xi.run_time ttt xi.st_time xi.end_time xi.round_time xi.rounds_time 作业平均周转时间 T= sum_time/n作业平均带权周转时间 T= sums_time / n void FCFS(job *x) sum_time = 0; sums_time = 0; time run = m_exchange_h(x0.r
7、un_time); x0.st_time = x0.in_time; x0.end_time = x0.st_time + run; x0.round_time = h_exchange_m(x0.end_time - x0.in_time); sum_time += x0.round_time; x0.rounds_time = x0.round_time*1.0 / x0.run_time; sums_time += x0.rounds_time; for (int i = 1; xi.st_time = maxn(xi.in_time, xi - 1.end_time); xi.end_
8、time = xi.st_time + m_exchange_h(xi.run_time); xi.round_time = h_exchange_m(xi.end_time - xi.in_time); xi.rounds_time = xi.round_time*1.0 / xi.run_time; sum_time += xi.round_time; sums_time += xi.rounds_time;n【先来先服务作业调度算法计算结果】n job_input(x);/短作业优先;void SJF(job *x) int flag100000 ; memset(flag, 0, sizeof(flag); time run =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1