code
do some changes in code and make it unique
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
//declaring functions
void firstFit(int [], int , int [],int );
void bestFit(int [], int , int [],int );
void worstFit(int [], int , int [],int );
//starting program
int main() {
//declare partitions and process
int partitions [] = {110, 450, 100, 250, 500};
int processes [] = {212, 417, 112, 426};
//getting their sizes
int size_partitions = sizeof(partitions )/sizeof(partitions [0]);
int size_processes = sizeof(processes )/sizeof(processes [0]);
printf("Partitions size: ") ;
for (int i=0; i<size_partitions; i++){
printf("%d\t" ,partitions[i] );
}
//index part
printf("\nPartitions index: " );
for (int i=0; i<size_partitions; i++){
printf("%d\t" ,(i+1)) ;
}
printf( "\n" );
// calling functions
firstFit(partitions , size_partitions, processes , size_processes);
bestFit(partitions , size_partitions, processes , size_processes);
worstFit(partitions , size_partitions, processes , size_processes);
}
void worstFit(int partitionSize[], int sizeM, int processSize[],int sizeP){
printf( "\n----worstFit--------" );
printf( "\n\tProcess \t\tpartitions location \tRemain size.\n") ;
int allocation[sizeP] ;
for (int i = 0; i < sizeP; i++)
allocation[i] = -1;
for (int i=0; i<sizeP; i++)
{
int index = -1;
for (int j=0; j<sizeM; j++)
{
if (partitionSize[j] >= processSize[i])
{
if (index == -1)
index = j;
else if (partitionSize[index] < partitionSize[j])
index = j;
}
}
if (index != -1)
{
allocation[i] = index;
partitionSize[index] -= processSize[i];
}
}
for (int i = 0; i < sizeP; i++)
{
printf("\t%d\t\t\t" ,processSize[i]) ;
if (allocation[i] != -1)
printf("%d\t\t\t%d",(allocation[i] + 1),partitionSize[allocation[i]]) ;
else
printf("Out of size" );
printf("\n");
}
}
void bestFit(int partitionSize[], int sizeM, int processSize[],int sizeP){
printf("\n----bestFit--------" );
printf( "\n\tProcess \t\tpartitions location \tRemain size.\n") ;
int allocation[sizeP] ;
for (int i = 0; i < sizeP; i++)
allocation[i] = -1;
for (int i=0; i<sizeP; i++)
{
int index = -1;
for (int j=0; j<sizeM; j++)
{
if (partitionSize[j] >= processSize[i])
{
if (index == -1)
index = j;
else if (partitionSize[index] > partitionSize[j])
index = j;
}
}
if (index != -1)
{
allocation[i] = index;
partitionSize[index] -= processSize[i];
}
}
for (int i = 0; i < sizeP; i++)
{
printf( "\t%d\t\t\t" ,processSize[i] ) ;
if (allocation[i] != -1)
printf( "%d\t\t\t%d" ,(allocation[i] + 1) ,partitionSize[allocation[i]] );
else
printf("Out of size" );
printf( "\n");
}
}
void firstFit(int partitionSize[], int sizeM,int processSize[], int sizeP){
printf( "\n----firstFit--------" );
printf( "\n\tProcess \t\tpartitions location \tRemain size.\n") ;
int allocation[sizeP] ;
for (int i = 0; i < sizeP; i++)
allocation[i] = -1;
for (int i = 0; i < sizeP; i++)
{
for (int j = 0; j < sizeM; j++)
{
if (partitionSize[j] >= processSize[i])
{
allocation[i] = j;
partitionSize[j] -= processSize[i];
break;
}
}
}
for (int i = 0; i < sizeP; i++)
{
printf("\t%d\t\t\t" ,processSize[i]) ;
if (allocation[i] != -1)
printf("%d\t\t\t%d",(allocation[i] + 1),partitionSize[allocation[i]] );
else
printf("Out of size") ;
printf("\n");
}
}
Step by step
Solved in 2 steps