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

Trending Topics

Online now

Members online
1,074
Guests online
2,786
Total visitors
3,860

Forum statistics

Threads
2,308,079
Posts
29,183,107
Members
1,191,827
Latest member
luluakomagdamag
Back
Top