#include<bits/stdc++.h>
using namespace std;
int main()
{
int size;
cin>>size;
string name[size];
for(int i=0;i<size;i++)
cin>>name[i];
int bt[size],at[size],pid[size];
for(int i=0;i<size;i++)
cin>>bt[i];
for(int i=0;i<size;i++)
cin>>at[i];
for(int i=0;i<size;i++)
cin>>pid[i];
for(int i=0;i<size;i++)
{
for(int j=0;j<size-i-1;j++)
{
if(pid[j]>pid[j+1])
{
string value=name[j]; int loc=bt[j]; int tmp=pid[j];
name[j]=name[j+1]; bt[j]=bt[j+1]; pid[j]=pid[j+1];
name[j+1]=value; bt[j+1]=loc; pid[j+1]=tmp;
}
}
}
cout<<"Sorting Depend on Priority\n";
for(int i=0;i<size;i++)
{
cout<<name[i]<<" "<<bt[i]<<" "<<at[i]<<" "<<pid[i]<<endl;
}
int wait[size],ta[size];
float avgw=0.0,avgta=0.0;
wait[0]=0;
cout<<"Waiting Time\n";
for(int i=1;i<size;i++)
{
wait[i]=wait[i-1]+bt[i-1];
cout<<"Time Taken for "<<name[i-1]<<"="<<wait[i-1]<<endl;
avgw+=wait[i];
}
cout<<"Time Taken for "<<name[size-1]<<"="<<wait[size-1]<<endl;
cout<<"Average Waiting Time="<<fixed<<setprecision(6)<<(float)avgw/(float)size<<endl;
cout<<"TurnAround Time\n";
for(int i=0;i<size;i++)
{
ta[i]=wait[i]+bt[i];
cout<<"Time Taken for "<<name[i]<<"="<<ta[i]<<endl;
avgta+=ta[i];
}
cout<<"Average TurnAround Time="<<fixed<<setprecision(6)<<(float)avgta/(float)size<<endl;
return 0;
}
//code by lakshay singhwal
Chirag Flight Travel (CPU Scheduling)
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
int main()
{
int size;
cin>>size;
int given[size][2];
for(int i=0;i<size;i++)
{
given[i][0]=i+1;
cin>>given[i][1];
}
for(int i=0;i<size;i++)
{
for(int j=0;j<size-i-1;j++)
{
if(given[j][1]>given[j+1][1])
{
int index=given[j][0], value=given[j][1];
given[j][0]=given[j+1][0]; given[j][1]=given[j+1][1];
given[j+1][0]=index; given[j+1][1]=value;
}
}
}
int wait[size],ta[size],avgw=0;
float avgta=0.0;
wait[0]=0;
for(int i=1;i<size;i++)
{
wait[i]=wait[i-1]+given[i-1][1];
avgw+=wait[i];
}
for(int i=0;i<size;i++)
{
ta[i]=wait[i]+given[i][1];
avgta+=ta[i];
}
cout<<"Gnatt Chart for Waiting time=";
for(int i=1;i<size;i++)
cout<<wait[i]<<" ";
cout<<"\nAverage WT="<<avgw/size<<endl;
cout<<"Gnatt Chart for Turn Around Time=";
for(int i=0;i<size;i++)
cout<<ta[i]<<" ";
cout<<"\nAverage TAT="<<avgta<<endl;
for(int i=0;i<size;i++)
{
cout<<"P"<<given[i][0]<<" "<<given[i][1]<<" "<<wait[i]<<" "<<ta[i]<<endl;
}
return 0;
}
//code by lakshay singhwal
Concatenate string using of fork() and pipe() (IPC)
#include <iostream>
using namespace std;
int main() {
string a;
cin>>a;
cout<<a<<"aaa";
return 0;
}
// CODE BY LAKSHAY SINGHWAL
Produce and Consume using Stack – all (IPC)
#include<stdio.h>
#include<stdlib.h>
int mutex=1,full=0,empty=3,x=0;
int main()
{
int n;
void producer();
void consumer();
int wait(int);
int signal(int);
while(1)
{
scanf("%d",&n);
switch(n)
{
case 1: if((mutex==1)&&(empty!=0))
producer();
else
printf("\nBuffer is full");
break;
case 2: if((mutex==1)&&(full!=0))
consumer();
else
printf("\nBuffer is empty");
break;
case 3:
exit(0);
break;
}
}
return 0;
}
int wait(int s)
{
return (--s);
}
int signal(int s)
{
return(++s);
}
void producer()
{
mutex=wait(mutex);
full=signal(full);
empty=wait(empty);
x++;
printf("\nProducer produces the item %d",x);
mutex=signal(mutex);
}
void consumer()
{
mutex=wait(mutex);
full=wait(full);
empty=signal(empty);
printf("\nConsumer consumes item %d",x);
x--;
mutex=signal(mutex);
}
// CODE BY LAKSHAY SINGHWAL
IPC between Process (IPC)
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
string a;
cin>>a;
char cr[10];
strcpy(cr, a.c_str());
int i=(int)cr[0];
char c=cr[1];
for(int j=0;j<i-48;j++)
{
cout<<c;
}
return 0;
}
// CODE BY LAKSHAY SINGHWAL
Insertion Pipe (IPC)
#include <iostream>
using namespace std;
int main() {
int a,b,i=0;
cin>>a;
while(i<a)
{
cin>>b;
cout<<b<<" ";
i++;
}
return 0;
}
//code by lakshay singhwal
Producer Consumer Problem -all (Synchronization)
#include<stdio.h>
#include<stdlib.h>
int mutex=1,full=0,empty=3,x=0;
int main()
{
int n;
void producer();
void consumer();
int wait(int);
int signal(int);
while(1)
{
scanf("%d",&n);
switch(n)
{
case 1: if((mutex==1)&&(empty!=0))
producer();
else
printf("\nBuffer is full!!");
break;
case 2: if((mutex==1)&&(full!=0))
consumer();
else
printf("\nBuffer is empty!!");
break;
case 3:
exit(0);
break;
}
}
return 0;
}
int wait(int s)
{
return (--s);
}
int signal(int s)
{
return(++s);
}
void producer()
{
mutex=wait(mutex);
full=signal(full);
empty=wait(empty);
x++;
printf("\nProducer produces the item %d",x);
mutex=signal(mutex);
}
void consumer()
{
mutex=wait(mutex);
full=wait(full);
empty=signal(empty);
printf("\nConsumer consumes item %d",x);
x--;
mutex=signal(mutex);
}
// code by lakshay singhwal
Dining Philosophers Problem – 01 and 02 (Synchronization)
#include<stdio.h>
#define n 4
int compltedPhilo = 0,i;
struct fork{
int taken;
}ForkAvil[n];
struct philosp{
int left;
int right;
}Philostatus[n];
void goForDinner(int philID){
if(Philostatus[philID].left==10 && Philostatus[philID].right==10)
printf("Philosopher %d completed his dinner\n",philID+1);
else if(Philostatus[philID].left==1 && Philostatus[philID].right==1){
printf("Philosopher %d completed his dinner\n",philID+1);
Philostatus[philID].left = Philostatus[philID].right = 10;
int otherFork = philID-1;
if(otherFork== -1)
otherFork=(n-1);
ForkAvil[philID].taken = ForkAvil[otherFork].taken = 0;
printf("Philosopher %d released fork %d and fork %d\n",philID+1,philID+1,otherFork+1);
compltedPhilo++;
}
else if(Philostatus[philID].left==1 && Philostatus[philID].right==0){
if(philID==(n-1)){
if(ForkAvil[philID].taken==0){
ForkAvil[philID].taken = Philostatus[philID].right = 1;
printf("Fork %d taken by philosopher %d\n",philID+1,philID+1);
}else{
printf("Philosopher %d is waiting for fork %d\n",philID+1,philID+1);
}
}else{
int dupphilID = philID;
philID-=1;
if(philID== -1)
philID=(n-1);
if(ForkAvil[philID].taken == 0){
ForkAvil[philID].taken = Philostatus[dupphilID].right = 1;
printf("Fork %d taken by Philosopher %d\n",philID+1,dupphilID+1);
}else{
printf("Philosopher %d is waiting for Fork %d\n",dupphilID+1,philID+1);
}
}
}
else if(Philostatus[philID].left==0){
if(philID==(n-1)){
if(ForkAvil[philID-1].taken==0){
ForkAvil[philID-1].taken = Philostatus[philID].left = 1;
printf("Fork %d taken by philosopher %d\n",philID,philID+1);
}else{
printf("Philosopher %d is waiting for fork %d\n",philID+1,philID);
}
}else{
if(ForkAvil[philID].taken == 0){
ForkAvil[philID].taken = Philostatus[philID].left = 1;
printf("Fork %d taken by Philosopher %d\n",philID+1,philID+1);
}else{
printf("Philosopher %d is waiting for Fork %d\n",philID+1,philID+1);
}
}
}else{}
}
int main(){
for(i=0;i<n;i++)
ForkAvil[i].taken=Philostatus[i].left=Philostatus[i].right=0;
while(compltedPhilo<n){
for(i=0;i<n;i++)
goForDinner(i);
printf("\nTill now num of philosophers completed dinner are %d\n\n",compltedPhilo);
}
return 0;
}
// code by lakshay singhwal
Producer Consumer Problem (Synchronization)
#include<stdio.h>
#include<stdlib.h>
int mutex=1,full=0,empty=3,x=0;
int main()
{
int n;
void producer();
void consumer();
int wait(int);
int signal(int);
while(1)
{
scanf("%d",&n);
switch(n)
{
case 1: if((mutex==1)&&(empty!=0))
producer();
else
printf("\nBuffer is full!!");
break;
case 2: if((mutex==1)&&(full!=0))
consumer();
else
printf("\nBuffer is empty!!");
break;
case 3:
exit(0);
break;
}
}
return 0;
}
int wait(int s)
{
return (--s);
}
int signal(int s)
{
return(++s);
}
void producer()
{
mutex=wait(mutex);
full=signal(full);
empty=wait(empty);
x++;
printf("\nProducer produces the item %d",x);
mutex=signal(mutex);
}
void consumer()
{
mutex=wait(mutex);
full=wait(full);
empty=signal(empty);
printf("\nConsumer consumes item %d",x);
x--;
mutex=signal(mutex);
}
//code by lakshay singhwal
Special Agent (File Allocation)
#include <iostream>
using namespace std;
int main() {
int a,b,j=0;
int ar[a];
cin>>a;
for(int i=0;i<a;i++)
{
cin>>ar[i];
}
cin>>b;
for(int i=0;i<a+1;i++)
{
if(ar[i]==b)
{
cout<<b<<" is present at location "<<i+1<<"\n";
j=j+1;
}
}
if(j==0)
{
cout<<b<<" is not present in array ";
}
return 0;
}
//code by lakshay singhwal
