You are on page 1of 8

Aashish Mhaske

9980

#include <stdio.h>

#include <string.h>

#define ICU_WARDS 2

#define REGULAR_WARDS 4

struct Patient {

char name[50];

int priority; // 1 to 10 (10 is highest)

int arrivalTimeHrs;

int arrivalTimeMin;

int treatmentTime; // Burst time

int completionTime;

int waitingTime;

char ward[10];

};

void allocateWards(struct Patient patients[], int n) {

int icuCount = 0;

int regularCount = 0;

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

patients[i].treatmentTime = patients[i].priority * 10; // Treatment time


proportional to priority

patients[i].arrivalTimeMin = patients[i].arrivalTimeHrs * 60 +
patients[i].arrivalTimeMin;

patients[i].waitingTime = 0; // Initialize waiting time to 0

if (patients[i].priority > 7 ) {

if(icuCount < 2){// ICU allocation


strcpy(patients[i].ward, "ICU");

patients[i].completionTime = patients[i].arrivalTimeMin +
patients[i].treatmentTime;

icuCount++;

else { // Add waiting time if no ward available

strcpy(patients[i].ward, "ICU");

int waitingTime = patients[i-2].arrivalTimeMin+ patients[i-


2].treatmentTime-patients[i].arrivalTimeMin;

if (waitingTime >0)

patients[i].waitingTime=waitingTime;

else

patients[i].waitingTime=0;

patients[i].completionTime = patients[i].arrivalTimeMin +
patients[i].treatmentTime + patients[i].waitingTime;

else if (patients[i].priority<=7 ) { // General ward allocation

if(regularCount < 4){

strcpy(patients[i].ward, "Regular");

patients[i].completionTime = patients[i].arrivalTimeMin +
patients[i].treatmentTime;

regularCount++;

} else { // Add waiting time if no ward available

strcpy(patients[i].ward, "Regular");

int waitingTime =patients[i-4].arrivalTimeMin+ patients[i-


4].treatmentTime-patients[i].arrivalTimeMin;

if (waitingTime >0)

patients[i].waitingTime=waitingTime;

else

patients[i].waitingTime=0;
patients[i].completionTime = patients[i].arrivalTimeMin +
patients[i].treatmentTime + patients[i].waitingTime;

void schedulePatients(struct Patient patients[], int n) {

printf("\nPatient Allocation:\n");

printf("----------------------------------------------------------------\n");

printf("| Name | Ward | Arrival Time | Treatment Time | WT | CT


|\n");

printf("----------------------------------------------------------------\n");

int totalWaitingTime = 0; // Variable to store the total waiting time

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

patients[i].treatmentTime = patients[i].priority * 10; // Treatment time


proportional to priority

patients[i].arrivalTimeMin = patients[i].arrivalTimeHrs * 60 +
patients[i].arrivalTimeMin;

// Update total waiting time

totalWaitingTime += patients[i].waitingTime;

printf("| %-13s | %-8s | %02d:%02d | %-14d | %-3d | %02d:%02d


|\n",

patients[i].name, patients[i].ward,

patients[i].arrivalTimeHrs, patients[i].arrivalTimeMin % 60,

patients[i].treatmentTime,
patients[i].waitingTime,

patients[i].completionTime / 60, patients[i].completionTime % 60);

// Calculate average waiting time

float averageWaitingTime = (float)totalWaitingTime / n;

printf("----------------------------------------------------------------\n");

printf("Average Waiting Time: %.2f minutes\n", averageWaitingTime);

int main() {

int n;

printf("Enter the number of patients: ");

scanf("%d", &n);

struct Patient patients[n];

printf("Enter patient details (name, priority, arrival time (hrs min)): \n");

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

printf("For Patient %d: ", i+1);

scanf("%s %d %d %d", patients[i].name, &patients[i].priority,


&patients[i].arrivalTimeHrs, &patients[i].arrivalTimeMin);

allocateWards(patients, n);

schedulePatients(patients, n);

return 0;

}
/*

PS C:\Users\user\OneDrive\Desktop\os> ./a.exe

Enter the number of patients: 5

Enter patient details (name, priority, arrival time (hrs min)):

For Patient 1: sai 9 10 30

For Patient 2: vvn 9 11 00

For Patient 3: rohan 8 11 30

For Patient 4: geet 3 15 00

For Patient 5: swain 4 16 00

Patient Allocation:

----------------------------------------------------------------

| Name | Ward | Arrival Time | Treatment Time | WT | CT |

----------------------------------------------------------------

| sai | ICU | 10:30 | 90 | 0 | 12:00 |

| vvn | ICU | 11:00 | 90 | 0 | 12:30 |

| rohan | ICU | 11:30 | 80 | 30 | 13:20 |

| geet | Regular | 15:00 | 30 | 0 | 15:30 |

| swain | Regular | 16:00 | 40 | 0 | 16:40 |

----------------------------------------------------------------

Average Waiting Time: 6.00 minutes*/

#include <stdio.h>

#define MAX_TEAMS 4

#define TIME_QUANTUM 20

struct Team {
int id;

int burst_time;

int remaining_time;

int points;

};

void executeRoundRobin(struct Team teams[], int n, int* winner_id) {

int time = 0;

int completed = 0;

int current_team = 0;

int highest_points = -1;

*winner_id = -1;

while (completed < n) {

if (teams[current_team].remaining_time > 0) {

if (teams[current_team].remaining_time <= TIME_QUANTUM) {

time += teams[current_team].remaining_time;

teams[current_team].points += 100;

teams[current_team].remaining_time = 0;

completed++;

} else {

time += TIME_QUANTUM;

teams[current_team].remaining_time -= TIME_QUANTUM;

teams[current_team].points -= 10;

if (teams[current_team].points > highest_points) {

highest_points = teams[current_team].points;

*winner_id = teams[current_team].id;

}
}

current_team = (current_team + 1) % n;

printf("Team\tPoints\n");

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

printf("%d\t%d\n", teams[i].id, teams[i].points);

int main() {

struct Team teams[MAX_TEAMS];

int winner_id;

// Input teams' burst time

for (int i = 0; i < MAX_TEAMS; i++) {

teams[i].id = i + 1;

printf("Enter burst time for Team %d: ", i + 1);

scanf("%d", &teams[i].burst_time);

teams[i].remaining_time = teams[i].burst_time;

teams[i].points = 0;

// Execute Round Robin and determine the winner

executeRoundRobin(teams, MAX_TEAMS, &winner_id);

// Declare the winner

if (winner_id != -1) {

printf("Team %d wins!\n", winner_id);


} else {

printf("No winner.\n");

return 0;

/*

Enter burst time for Team 1: 30

Enter burst time for Team 2: 20

Enter burst time for Team 3: 40

Enter burst time for Team 4: 30

Team Points

1 90

2 100

3 90

4 90

Team 2 wins!

*/

You might also like