#include <stdio.h>
typedef struct {
int id; // Identificador del proceso
int tiempoLlegada; // Tiempo de llegada del proceso
int tiempoEjecucion; // Tiempo de ejecución del proceso
int tiempoEspera; // Tiempo de espera del proceso
int tiempoFinal; // Tiempo de finalización del proceso
} Proceso;
void calcularTiempos(Proceso procesos[], int n) {
int tiempoActual = 0;
for (int i = 0; i < n; i++) {
// Si el tiempo actual es menor que el tiempo de llegada, avanzamos el tiempo
if (tiempoActual < procesos[i].tiempoLlegada) {
tiempoActual = procesos[i].tiempoLlegada;
}
// Calcular tiempos
procesos[i].tiempoEspera = tiempoActual - procesos[i].tiempoLlegada;
tiempoActual += procesos[i].tiempoEjecucion;
procesos[i].tiempoFinal = tiempoActual;
}
}
void imprimirResultados(Proceso procesos[], int n) {
printf("ID\tTiempo de llegada\tTiempo de ejecución\tTiempo de espera\tTiempo final\n");
for (int i = 0; i < n; i++) {
printf("%d\t%d\t\t\t%d\t\t\t%d\t\t\t%d\n",
procesos[i].id,
procesos[i].tiempoLlegada,
procesos[i].tiempoEjecucion,
procesos[i].tiempoEspera,
procesos[i].tiempoFinal);
}
}
int main() {
Proceso procesos[] = {
{1, 0, 5}, // Proceso 1: llega en 0, tiempo de ejecución 5
{2, 1, 3}, // Proceso 2: llega en 1, tiempo de ejecución 3
{3, 2, 8}, // Proceso 3: llega en 2, tiempo de ejecución 8
{4, 3, 6} // Proceso 4: llega en 3, tiempo de ejecución 6
};
int n = sizeof(procesos) / sizeof(procesos[0]);
calcularTiempos(procesos, n);
imprimirResultados(procesos, n);
return 0;
}