🔒 Closed Help. explain tong code

Status
Not open for further replies.

_KaNeKi_

Eternal Poster
maam/sir, may nakita po kasi akong c++ source code sa google about sa cpu scheduling. gusto ko pag aralan kaso nalulula ako sa code kahit sabi ng iba na may pagka simple lang to. patulong naman po sana pa explain bawat code. salamat po

Eto po yung code:

#include<iostream>
#include<algorithm>
using namespace std;

struct node{
char pname;
int btime;
int atime;
int priority;
int restime=0;
int ctime=0;
int wtime=0;
}a[50],b[50],c[50];

void insert(int n){
int i;
for(i=0;i<n;i++){
cin>>a.pname;
cin>>a.priority;
cin>>a.atime;
cin>>a.btime;
a.wtime=-a.atime+1;

}
}

bool btimeSort(node a,node b){
return a.btime < b.btime;
}

bool atimeSort(node a,node b){
return a.atime < b.atime;
}
bool prioritySort(node a,node b){
return a.priority < b.priority;
}
int k=0,f=0,r=0;
void disp(int nop,int qt){
int n=nop,q;
sort(a,a+n,atimeSort);
int ttime=0,i;
int j,tArray[n];
int alltime=0;
bool moveLast=false;
for(i=0;i<n;i++){
alltime+=a.btime;
}
alltime+=a[0].atime;
for(i=0;ttime<=alltime;){
j=i;
while(a[j].atime<=ttime&&j!=n){
b[r]=a[j];
j++;
r++;
}
if(r==f){
c[k].pname='i';
c[k].btime=a[j].atime-ttime;
c[k].atime=ttime;
ttime+=c[k].btime;
k++;
continue;
}
i=j;
if(moveLast==true){
sort(b+f,b+r,prioritySort);

}

j=f;
if(b[j].btime>qt){
c[k]=b[j];
c[k].btime=qt;
k++;
b[j].btime=b[j].btime-qt;
ttime+=qt;
moveLast=true;
for(q=0;q<n;q++){
if(b[j].pname!=a[q].pname){
a[q].wtime+=qt;
}
}
}
else{
c[k]=b[j];
k++;
f++;
ttime+=b[j].btime;
moveLast=false;
for(q=0;q<n;q++){
if(b[j].pname!=a[q].pname){
a[q].wtime+=b[j].btime;
}
}
}
if(f==r&&i>=n)
break;
}
tArray=ttime;
ttime+=a.btime;
for(i=0;i<k-1;i++){
if(c.pname==c[i+1].pname){
c.btime+=c[i+1].btime;
for(j=i+1;j<k-1;j++)
c[j]=c[j+1];
k--;
i--;
}
}

int rtime=0;
for(j=0;j<n;j++){
rtime=0;
for(i=0;i<k;i++){
if(c.pname==a[j].pname){
a[j].restime=rtime;
break;
}
rtime+=c.btime;
}
}

float averageWaitingTime=0;
float averageResponseTime=0;
float averageTAT=0;

cout<<"\nGantt Chart\n";
rtime=0;
for (i=0; i<k; i++){
if(i!=k)
cout<<"| "<<'P'<< c.pname << " ";
rtime+=c.btime;
for(j=0;j<n;j++){
if(a[j].pname==c.pname)
a[j].ctime=rtime;
}
}
cout<<"\n";
rtime=0;
for (i=0; i<k+1; i++){
cout << rtime << "\t";
tArray=rtime;
rtime+=c.btime;
}

cout<<"\n";
cout<<"\n";
cout<<"P.Name Priority AT\tBT\tCT\tTAT\tWT\tRT\n";
for (i=0; i<nop&&a.pname!='i'; i++){
if(a.pname=='\0')
break;
cout <<'P'<< a.pname << "\t";
cout << a.priority << "\t";
cout << a.atime << "\t";
cout << a.btime << "\t";
cout << a.ctime << "\t";
cout << a.wtime+a.ctime-rtime+a.btime << "\t";
averageTAT+=a.wtime+a.ctime-rtime+a.btime;
cout << a.wtime+a.ctime-rtime << "\t";
averageWaitingTime+=a.wtime+a.ctime-rtime;
cout << a.restime-a.atime << "\t";
averageResponseTime+=a.restime-a.atime;
cout <<"\n";
}

cout<<"Average Response time: "<<(float)averageResponseTime/(float)n<<endl;
cout<<"Average Waiting time: "<<(float)averageWaitingTime/(float)n<<endl;
cout<<"Average TA time: "<<(float)averageTAT/(float)n<<endl;

}

int main(){
int nop,choice,i,qt;
cout<<"Enter number of processes\n";
cin>>nop;
cout<<"Enter process, priority, AT, BT\n";

insert(nop);

disp(nop,1);
return 0;
}
 
Status
Not open for further replies.

About this Thread

  • 1
    Replies
  • 442
    Views
  • 1
    Participants
Last reply from:
_KaNeKi_

Online now

Members online
1,028
Guests online
704
Total visitors
1,732

Forum statistics

Threads
2,276,962
Posts
28,973,362
Members
1,229,667
Latest member
Kismut26
Back
Top