#include int blocks, process, bl[30], pr[30]; void first() { printf("\n\nFIRST FIT ALLOCATION\n"); int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}; for (int i = 0; i < blocks; i++) block[i] = bl[i]; for (int i = 0; i < process; i++) proc[i] = pr[i]; for (int i = 0; i < process; i++) { for (int j = 0; j < blocks; j++) { if (block[j] >= proc[i] && flag_block[j] == 0) { printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, j + 1, block[j]); flag_block[j] = 1; flag_proc[i] = 1; break; } } if (flag_proc[i] == 0) printf("\nProcess P%d cannot be allocated..!", i + 1); } } void best() { printf("\n\nBEST FIT ALLOCATION\n"); int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}, temp, k; for (int i = 0; i < blocks; i++) block[i] = bl[i]; for (int i = 0; i < process; i++) proc[i] = pr[i]; for (int i = 0; i < blocks - 1; i++) { for (int j = 0; j < blocks - i - 1; j++) { if (block[j] > block[j + 1]) { temp = block[j]; block[j] = block[j + 1]; block[j + 1] = temp; } } } for (int i = 0; i < process; i++) { for (int j = 0; j < blocks; j++) { if (block[j] >= proc[i] && flag_block[j] == 0) { for (k = 0; k < blocks; k++) { if (bl[k] == block[j]) break; } printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, k + 1, block[j]); flag_block[j] = 1; flag_proc[i] = 1; break; } } if (flag_proc[i] == 0) printf("\nProcess P%d cannot be allocated..!", i + 1); } } void worst() { printf("\n\nWORST FIT ALLOCATION\n"); int block[30], proc[30], flag_block[30] = {0}, flag_proc[30] = {0}, temp, k; for (int i = 0; i < blocks; i++) block[i] = bl[i]; for (int i = 0; i < process; i++) proc[i] = pr[i]; for (int i = 0; i < blocks - 1; i++) { for (int j = 0; j < blocks - i - 1; j++) { if (block[j] < block[j + 1]) { temp = block[j]; block[j] = block[j + 1]; block[j + 1] = temp; } } } for (int i = 0; i < process; i++) { for (int j = 0; j < blocks; j++) { if (block[j] >= proc[i] && flag_block[j] == 0) { for (k = 0; k < blocks; k++) { if (bl[k] == block[j]) break; } printf("\nProcess P%d has been allocated to Block B%d of Size -> %d", i + 1, k + 1, block[j]); flag_block[j] = 1; flag_proc[i] = 1; break; } } if (flag_proc[i] == 0) printf("\nProcess P%d cannot be allocated..!", i + 1); } } int main() { printf("\nEnter the Number of Memory Blocks Available : "); scanf("%d", &blocks;); printf("\nEnter the size of each Block : \n"); for (int i = 0; i < blocks; i++) { printf("Block B%d -> ", i + 1); scanf("%d", &bl;[i]); } printf("\nEnter the Number of Requesting Processes : "); scanf("%d", &process;); printf("\nEnter the size of each Process : \n"); for (int i = 0; i < process; i++) { printf("Process P%d -> ", i + 1); scanf("%d", ≺[i]); } first(); best(); worst(); return 0; }