0% found this document useful (0 votes)
15 views8 pages

AlgoLab8 Graded Lab 2 Aditya-Mishra

The document contains code for a C program that implements job scheduling with deadlines. It defines a Job struct with ID, deadline and profit fields. It sorts the jobs by profit in descending order. It uses a timeslot array to track which jobs are scheduled in each time period up to the maximum deadline. It prints the scheduled jobs and maximum total profit.

Uploaded by

Aditya Mishra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views8 pages

AlgoLab8 Graded Lab 2 Aditya-Mishra

The document contains code for a C program that implements job scheduling with deadlines. It defines a Job struct with ID, deadline and profit fields. It sorts the jobs by profit in descending order. It uses a timeslot array to track which jobs are scheduled in each time period up to the maximum deadline. It prints the scheduled jobs and maximum total profit.

Uploaded by

Aditya Mishra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

NAME – Aditya Mishra ROLL NO.

- 180102114 SAP ID - 1000011196

Q: Write a program in C to implement job scheduling


with deadline.
SOLN :- The required code is :-
#include <stdio.h>

#define MAX 100

typedef struct Job {


char id[5];
int deadline;
int profit;
} Job;

void jobSequencingWithDeadline(Job jobs[], int n);

int minValue(int x, int y) {


if(x < y) return x;
return y;
NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

int main(void) {
//variables
int i, j;

printf("NAME - Aditya Mishra, ROLL NO. -


180102114, SAP ID - 1000011196 \n\n");

//jobs with deadline and profit


Job jobs[5] = {
{"j1", 2, 60},
{"j2", 1, 100},
{"j3", 3, 20},
{"j4", 2, 40},
{"j5", 1, 20},
};
NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

//temp
Job temp;

//number of jobs
int n = 5;

//sort the jobs profit wise in descending order


for(i = 1; i < n; i++) {
for(j = 0; j < n - i; j++) {
if(jobs[j+1].profit > jobs[j].profit) {
temp = jobs[j+1];
jobs[j+1] = jobs[j];
jobs[j] = temp;
}
}
}

printf("%10s %10s %10s\n", "Job", "Deadline", "Profit");


NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

for(i = 0; i < n; i++) {


printf("%10s %10i %10i\n", jobs[i].id, jobs[i].deadline,
jobs[i].profit);
}

jobSequencingWithDeadline(jobs, n);

return 0;
}

void jobSequencingWithDeadline(Job jobs[], int n) {


//variables
int i, j, k, maxprofit;

//free time slots


int timeslot[MAX];

//filled time slots


NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

int filledTimeSlot = 0;

//find max deadline value


int dmax = 0;
for(i = 0; i < n; i++) {
if(jobs[i].deadline > dmax) {
dmax = jobs[i].deadline;
}
}

//free time slots initially set to -1 [-1 denotes EMPTY]


for(i = 1; i <= dmax; i++) {
timeslot[i] = -1;
}

printf("dmax: %d\n", dmax);

for(i = 1; i <= n; i++) {


NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

k = minValue(dmax, jobs[i - 1].deadline);


while(k >= 1) {
if(timeslot[k] == -1) {
timeslot[k] = i-1;
filledTimeSlot++;
break;
}
k--;
}

//if all time slots are filled then stop


if(filledTimeSlot == dmax) {
break;
}
}

//required jobs
printf("\nRequired Jobs: ");
NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

for(i = 1; i <= dmax; i++) {


printf("%s", jobs[timeslot[i]].id);

if(i < dmax) {


printf(" --> ");
}
}

//required profit
maxprofit = 0;
for(i = 1; i <= dmax; i++) {
maxprofit += jobs[timeslot[i]].profit;
}
printf("\nMax Profit: %d\n", maxprofit);
}

OUTPUT :-
NAME – Aditya Mishra ROLL NO. - 180102114 SAP ID - 1000011196

You might also like