(Operación) Algoritmo de programación de trabajo corto

Código (trabaja a tu alrededor)

#include <stdio.h> 

struct sjf // Define la estructura del proceso
{
char name [10]; // nombre del proceso
float arrivaltime; // hora de llegada
float servicetime; // service time
float starttime; // hora de inicio
float finishtime; // hora de finalización
float zztime ; // tiempo de rotación
float dqzztime; // tiempo de respuesta ponderado
};
sjf b [100]; // define el número máximo de procesos de algoritmo de prioridad de trabajo corto
Sinid vacío (sjf * p, int N) // función de entrada
{
int i ;
printf ("Ingrese el nombre del proceso, hora de llegada, tiempo de servicio: \ n");
for (i = 0; i <= N-1; i ++)
{
printf ("Ingrese el nombre del proceso% d, hora de llegada, Tiempo de servicio: ", i + 1);
scanf ("% s% f% f ", & p [i] .name, & p [i] .arrivetime, & p [i] .servicetime);

}
} // muestra cada uno Información del proceso


SPrint vacío (sjf * p, tiempo de llegada flotante, tiempo de servicio flotante, tiempo de inicio flotante, tiempo de finalización flotante, tiempo zz flotante, tiempo dqzz flotante, int N)
{
int k;
printf ("\ n 执行 顺序: \ n");
printf ("% s", p [0] .name);
para (k = 1; k <N; k ++)
{
printf ("-% s", p [k] .name);
}
printf ("\ n 进程 名 \ tarrive \ tservice \ tstart \ tfinish \ tzz \ tdqzz \ n");
para (k = 0; k <= N-1; k ++)
{
printf ("% s \ t% -. 2f \ t% -. 2f \ t% -. 2f \ t% -. 2f \ t% -. 2f \ t% -. 2f \ t \ n \ n ", p [k] .name, p [k] .arrivetime, p [k] .servicetime, p [k] .starttime, p [k] .finishtime, p [k] .zztime, p [k] .dqzztime);
}
} // 输出 执行 顺序

void Ssort (sjf * p, int N) // 按 短 作业 优先 算法 排序
{
for (int i = 1; i <= N-1; i ++)
for (int j = 1; j <= i;
if (p [i] .servicetime <p [j] .servicetime)
{
sjf temp;
temp = p [i];
p [i] = p [j];
p [j] = temp;
}
} // Ejecutar resultado (

Clasificación de burbujas ) void Sdeal (sjf * p, tiempo de llegada de flotación, tiempo de servicio de flotación, hora de inicio de flotación, hora de finalización de flotación, flotación y zztime, flotación y dqzztime, int N)
{
int k;
for (k = 0; k <= N-1; k ++)
{
if (k == 0)
{
p [k] .starttime = p [k] .arrivetime;
p [k] .finishtime = p [k] .arrivetime + p [k] .servicetime;
}
else
{
p [k] .starttime = p [k-1] .finishtime; // Hora de inicio = Tiempo de finalización del proceso anterior
p [k] .finishtime = p [k-1] .finishtime + p [k] .servicetime; / / Tiempo final = Tiempo de finalización del proceso anterior + Tiempo de servicio del proceso actual
)
}
para (k = 0; k <= N-1; k ++)
{
p [k] .zztime = p [k] .finishtime-p [k] .arrivetime; // Tiempo de rotación = tiempo de finalización-hora de llegada
p [k] .dqzztime = p [k] .zztime / p [k] .servicetime; // tiempo de respuesta ponderado = tiempo de respuesta / tiempo de servicio
}
} // calcular varios tiempos

nulo SJF (sjf * p, int N)
{tiempo de
llegada flotante = 0, tiempo de servicio = 0, hora de inicio = 0, hora de finalización = 0, zztime = 0, dqzztime = 0; //
Ssort inicial (p, N); // Llamado Ordenar
Sdeal (p, hora de llegada, hora de servicio, hora de inicio, hora de finalización, zztime, dqzztime, N); // Obtener varias veces
SPrint (p, hora de llegada, hora de servicio, hora de inicio, hora de finalización, zztime, dqzztime, N); // resultado de salida
)
int main () // Función principal
{
int M;
printf ("Algoritmo de programación de prioridad de trabajo corto \ n");
printf ("Número de procesos de entrada:");
scanf ("% d", & M);
Sinput (b, M );
SJF (b, M);
retorno 0;
}

 

Supongo que te gusta

Origin www.cnblogs.com/1314-520/p/12707044.html
Recomendado
Clasificación