What's new

C & C++ Help. explain tong code

_KaNeKi_

Eternal Poster
Joined
Jan 15, 2017
Posts
921
Solutions
1
Reaction
151
Points
438
Age
24
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;
}
 

Similar threads

Back
Top