🔒 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
  • 447
    Views
  • 1
    Participants
Last reply from:
_KaNeKi_

Trending Topics

Online now

Members online
845
Guests online
1,391
Total visitors
2,236

Forum statistics

Threads
2,288,529
Posts
29,052,250
Members
1,214,171
Latest member
balsack19
Back
Top