en este seria básicamente como el FIFO, solo con la pequeña diferencia de tener que acomodar los procesos por el menor tiempo. en este caso yo utilice el ordenmiento rapido para que se acomodara el arreglo del menor a mayor.
#include <iostream> using namespace std; #define limite 5 int cont; void insertar(char datos[],int tiempo[],int l){ for(int i = 0; i < (l); i++){ cout << "inserte el tiempo en el proceso [" << datos[i] << "]: "; cin >> tiempo[i]; system("cls"); } } void swap(char datos[],int tiempo[], int i, int j) { int auxChar = datos[i]; int aux = tiempo[i]; datos[i] = datos[j]; tiempo[i] = tiempo[j]; datos[j] = aux; tiempo[j] = auxChar; } void OrdenamientoRapido(char datos[],int tiempo[], int inf, int sup) { if (sup > inf) { int pivote = tiempo[sup]; int i = inf - 1; int j = sup; do { while (tiempo[++i] < pivote); while (tiempo[--j] > pivote); if (i < j) swap(datos,tiempo, i, j); } while (i < j); swap(datos,tiempo, i, sup); OrdenamientoRapido(datos,tiempo, inf, i-1); OrdenamientoRapido(datos,tiempo, i+1, sup); } } int OrdenamientoRapido(char datos[],int tiempo[], int numero) { cont = 0; OrdenamientoRapido(datos, 0, numero-1); return cont; } void primeroMasCorto(char datos[],int tiempo[], int l){ int intercambio; int tiempoTotal=0; float tiempoReturn=0; insertar(datos,tiempo,l); OrdenamientoRapido(datos,tiempo,0,l); for(int j = 0;j < l; j++){ tiempoTotal += tiempo[j]; tiempoReturn += tiempoTotal; cout<<"\n""tiempo de retorno ["<<datos[j]<<"]: "<<tiempoTotal<<"\t"; } tiempoReturn = tiempoReturn / l; cout<<"\n\nEl tiempo de las entradas son: "<<tiempoReturn; } int main(){ system("title PRIMERO MAS CORTO"); system("color 0e"); cout<<"\t\t\tSimulacion proceso de Primero mas Corto en C++"<<endl; cout<<"\t\t_______________________________________\n"<<endl; char datos[limite] = {'a','b','c','d','e'}; int tiempo[limite]; primeroMasCorto(datos,tiempo,limite); cin.get(); cin.get(); return 0; }