Windows 已在 1.exe 中触发一个断点。
其原因可能是堆被损坏,这说明 1.exe 中或它所加载的任何 DLL 中有 Bug。
原因也可能是用户在 1.exe 具有焦点时按下了 F12。
输出窗口可能提供了更多诊断信息。
是VC2010
#include<iostream>
#include<string.h>
#include <cmath>
#include <vector>
using namespace std;
class pcb{
public:
int arrtime; /* 作业提交时间*/
int sertime;/*作业预计运行时间*/
int wartime;/*作业等待时间*/
int begtime; /*开始运行时间*/
double turtime; /*周转时间*/
double wtutime; /*带权周转时间*/
int seq;/*序列*/
pcb(){};
pcb(int a,int b){
arrtime = a;
sertime = b;
}
};
int n;
pcb* p = new pcb[n];
void cinn(){
cout<<"请输入作业数量"<<endl;
cin>>n;
int a;
for(int i=0;i<n;i++){
cin>>a>>p[i].sertime;
p[i].arrtime=a%100+(a/100)*60;
p[i].seq=i+1;
}
}
void exce(int a,int b){
int temp =a;
a=b;
b=temp;
}
void hrn(){
p[0].begtime=p[0].arrtime;
p[0].turtime =p[0].sertime;
p[0].wtutime = 1;
p[0].wartime = 0;
for(int j=0;j<n-1;j++){
for(int k = j+1;k<n;k++){
p[k].wartime=p[j].sertime+p[j].wartime;
}
for(int m=j;m<n;m++){
for(int k = m;k<n-j;k++){
if(p[k].wartime>p[k+1].wartime){
exce(p[k].wartime,p[k+1].wartime);
exce(p[k].seq,p[k+1].seq);
exce(p[k].arrtime,p[k+1].arrtime);
exce(p[k].sertime,p[k+1].sertime);
}
}
}
}
}
void print(){
cout<<"调度次序 "<<"作业号 "<<"调度时间 "<<"周转时间 "<<"带权周转时间 "<<endl;
for(int i=1;i<n;i++){
p[i].begtime=p[i-1].begtime+p[i-1].sertime;
p[i].turtime=p[i].begtime+p[i].sertime-p[i].arrtime;
p[i].wtutime=p[i].turtime/p[i].sertime;
}
int sum=0,sum1=0;
for(int i = 0;i<n;i++){
cout<<i+1<<" "<<p[i].seq<<" "<<((p[i].begtime/60)*100+p[i].begtime%60)<<" "<<p[i].turtime<<" "<<p[i].wtutime<<" "<<endl;
sum = sum+p[i].turtime;
sum1 = sum1+p[i].wtutime;
}
cout<<"平均周转时间:"<<sum/n<<" 平均带权周转时间"<<sum1/n<<endl;
}
int main(){
cinn();
hrn();
print();
delete p;
system("pause");
return 0;
}