Advertisement
V15H4L

OPTIMAL

Apr 19th, 2023 (edited)
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.32 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int setframe(int arr[], int frame[], int ind, int n, int c)
  5. {
  6.     int farthest=ind;
  7.     int change=-1;
  8.  
  9.     for(int i=0; i<c; i++)
  10.     {
  11.         int j;
  12.         for(j=ind; j<n; j++)
  13.         {
  14.             if(frame[i]==arr[j])
  15.             {
  16.                 if(j>farthest)
  17.                 {
  18.                     farthest=j;
  19.                     change=i;
  20.                 }
  21.  
  22.                 break;
  23.             }
  24.         }
  25.  
  26.         if(j==n) return i;
  27.     }
  28.     return change;
  29. }
  30.  
  31. int Optimal(int arr[], int frame[], int n, int c)
  32. {
  33.     int count=0;
  34.     for(int i=0; i<n; i++)
  35.     {
  36.         int check=0;
  37.         for(int j=0; j<c; j++)
  38.         {
  39.             if(arr[i]==frame[j])
  40.             {
  41.                 check=1;
  42.                 break;
  43.             }
  44.         }
  45.  
  46.         if(check==0)
  47.         {
  48.             count++;
  49.             int ind=setframe(arr, frame, i+1, n, c);
  50.             frame[ind]=arr[i];
  51.         }
  52.     }
  53.  
  54.     //NO.of swaps
  55.     return count;
  56. }
  57.  
  58. int main(){
  59.     printf("Enter the number of pages\n");
  60.     int n;
  61.     scanf("%d", &n);
  62.  
  63.     printf("Enter the number of frames\n");
  64.     int c;
  65.     scanf("%d", &c);
  66.  
  67.     int arr[n];
  68.     int frame[c];
  69.  
  70.     for(int i=0; i<c; i++) frame[i]=-1;
  71.     for(int i=0; i<n; i++)
  72.     {
  73.         printf("Enter the page number\n");
  74.         scanf("%d", &arr[i]);
  75.     }
  76.  
  77.     int ans=Optimal(arr, frame, n, c);
  78.     printf("The number of page faults are :%d", ans);
  79.  
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement