#include<stdio.h> void FIFO(char [],char [],int,int); void lru(char [],char [],i
ID: 3650466 • Letter: #
Question
#include<stdio.h>
void FIFO(char [],char [],int,int);
void lru(char [],char [],int,int);
void opt(char [],char [],int,int);
int main()
{
int ch,YN=1,i,l,f;
char F[10],s[25];
clrscr();
//system("clear");
printf(" Enter the no of empty frames: ");
scanf("%d",&f);
printf(" Enter the length of the string: ");
scanf("%d",&l);
printf(" Enter the string: ");
scanf("%s",s);
for(i=0;i<f;i++)
F[i]=-1;
do
{
// system("clear");
printf(" *********** MENU ***********");
printf(" 1:FIFO 2:LRU 3:OPT 4:EXIT");
printf(" Enter your choice: ");
scanf("%d",&ch);
//system("clear");
switch(ch)
{
case 1:
for(i=0;i<f;i++)
{
F[i]=-1;
}
FIFO(s,F,l,f);
break;
case 2:
for(i=0;i<f;i++)
{
F[i]=-1;
}
lru(s,F,l,f);
break;
case 3:
for(i=0;i<f;i++)
{
F[i]=-1;
}
opt(s,F,l,f);
break;
case 4:
exit(0);
}
printf(" Do u want to continue IF YES PRESS 1 IF NO PRESS 0 : ");
scanf("%d", &YN);
}while(YN==1);return(0);
}
//FIFO
void FIFO(char s[],char F[],int l,int f)
{
int i,j=0,k,flag=0,cnt=0;
printf(" PAGE FRAMES FAULTS");
for(i=0;i<l;i++)
{
for(k=0;k<f;k++)
{
if(F[k]==s[i])
flag=1;
}
if(flag==0)
{
printf(" %c ",s[i]);
F[j]=s[i];
j++;
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
printf(" Page-fault%d",cnt);
cnt++;
}
else
{
flag=0;
printf(" %c ",s[i]);
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
printf(" No page-fault");
}
if(j==f)
j=0;
}
}
//LRU
void lru(char s[],char F[],int l,int f)
{
int i,j=0,k,m,flag=0,cnt=0,top=0;
printf(" PAGE FRAMES FAULTS");
for(i=0;i<l;i++)
{
for(k=0;k<f;k++)
{
if(F[k]==s[i])
{
flag=1;
break;
}
}
printf(" %c ",s[i]);
if(j!=f && flag!=1)
{
F[top]=s[i];
j++;
if(j!=f)
top++;
}
else
{
if(flag!=1)
{
for(k=0;k<top;k++)
{
F[k]=F[k+1];
}
F[top]=s[i];
}
if(flag==1)
{
for(m=k;m<top;m++)
{
F[m]=F[m+1];
}
F[top]=s[i];
}
}
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
if(flag==0)
{
printf(" Page-fault%d",cnt);
cnt++;
}
else
printf(" No page fault");
flag=0;
}
}
//optimal
void opt(char s[],char F[],int l,int f)
{
int i,j=0,k,m,flag=0,cnt=0,temp[10];
printf(" PAGE FRAMES FAULTS");
for(i=0;i<10;i++)
temp[i]=0;
for(i=0;i<f;i++)
F[i]=-1;
for(i=0;i<l;i++)
{
for(k=0;k<f;k++)
{
if(F[k]==s[i])
flag=1;
}
if(j!=f && flag==0)
{
F[j]=s[i];
j++;
}
else if(flag==0)
{
for(m=0;m<f;m++)
{
for(k=i+1;k<l;k++)
{
if(F[m]!=s[k])
{
temp[m]=temp[m]+1;
}
else
break;
}
}
m=0;
for(k=0;k<f;k++)
{
if(temp[k]>temp[m])
{
m=k;
}
}
F[m]=s[i];
}
printf(" %c ",s[i]);
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
if(flag==0)
{
printf(" Page-fault %d",cnt);
cnt++;
}
else
printf(" No Page-fault");
flag=0;
for(k=0;k<10;k++)
temp[k]=0;
}
}
Explanation / Answer
please rate - thanks
get rid of clrscr(); it's not standard.
#include<stdio.h>
void FIFO(char [],char [],int,int);
void lru(char [],char [],int,int);
void opt(char [],char [],int,int);
int main()
{
int ch,YN=1,i,l,f;
char F[10],s[25];
//clrscr();
//system("clear");
printf(" Enter the no of empty frames: ");
scanf("%d",&f);
printf(" Enter the length of the string: ");
scanf("%d",&l);
printf(" Enter the string: ");
scanf("%s",s);
for(i=0;i<f;i++)
F[i]=-1;
do
{
// system("clear");
printf(" *********** MENU ***********");
printf(" 1:FIFO 2:LRU 3:OPT 4:EXIT");
printf(" Enter your choice: ");
scanf("%d",&ch);
//system("clear");
switch(ch)
{
case 1:
for(i=0;i<f;i++)
{
F[i]=-1;
}
FIFO(s,F,l,f);
break;
case 2:
for(i=0;i<f;i++)
{
F[i]=-1;
}
lru(s,F,l,f);
break;
case 3:
for(i=0;i<f;i++)
{
F[i]=-1;
}
opt(s,F,l,f);
break;
case 4:
exit(0);
}
printf(" Do u want to continue IF YES PRESS 1 IF NO PRESS 0 : ");
scanf("%d", &YN);
}while(YN==1);return(0);
}
//FIFO
void FIFO(char s[],char F[],int l,int f)
{
int i,j=0,k,flag=0,cnt=0;
printf(" PAGE FRAMES FAULTS");
for(i=0;i<l;i++)
{
for(k=0;k<f;k++)
{
if(F[k]==s[i])
flag=1;
}
if(flag==0)
{
printf(" %c ",s[i]);
F[j]=s[i];
j++;
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
printf(" Page-fault%d",cnt);
cnt++;
}
else
{
flag=0;
printf(" %c ",s[i]);
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
printf(" No page-fault");
}
if(j==f)
j=0;
}
}
//LRU
void lru(char s[],char F[],int l,int f)
{
int i,j=0,k,m,flag=0,cnt=0,top=0;
printf(" PAGE FRAMES FAULTS");
for(i=0;i<l;i++)
{
for(k=0;k<f;k++)
{
if(F[k]==s[i])
{
flag=1;
break;
}
}
printf(" %c ",s[i]);
if(j!=f && flag!=1)
{
F[top]=s[i];
j++;
if(j!=f)
top++;
}
else
{
if(flag!=1)
{
for(k=0;k<top;k++)
{
F[k]=F[k+1];
}
F[top]=s[i];
}
if(flag==1)
{
for(m=k;m<top;m++)
{
F[m]=F[m+1];
}
F[top]=s[i];
}
}
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
if(flag==0)
{
printf(" Page-fault%d",cnt);
cnt++;
}
else
printf(" No page fault");
flag=0;
}
}
//optimal
void opt(char s[],char F[],int l,int f)
{
int i,j=0,k,m,flag=0,cnt=0,temp[10];
printf(" PAGE FRAMES FAULTS");
for(i=0;i<10;i++)
temp[i]=0;
for(i=0;i<f;i++)
F[i]=-1;
for(i=0;i<l;i++)
{
for(k=0;k<f;k++)
{
if(F[k]==s[i])
flag=1;
}
if(j!=f && flag==0)
{
F[j]=s[i];
j++;
}
else if(flag==0)
{
for(m=0;m<f;m++)
{
for(k=i+1;k<l;k++)
{
if(F[m]!=s[k])
{
temp[m]=temp[m]+1;
}
else
break;
}
}
m=0;
for(k=0;k<f;k++)
{
if(temp[k]>temp[m])
{
m=k;
}
}
F[m]=s[i];
}
printf(" %c ",s[i]);
for(k=0;k<f;k++)
{
printf(" %c",F[k]);
}
if(flag==0)
{
printf(" Page-fault %d",cnt);
cnt++;
}
else
printf(" No Page-fault");
flag=0;
for(k=0;k<10;k++)
temp[k]=0;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.