#include <iostream>
#include <cstdlib>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
float esperafifo=0, respuestafifo=0, esperasjf=0, respuestasjf=0, espera=0, respuesta=0;
int menu();
void fifo();
void sjf();
void comparacion();
main()
{
int opc;
do{
opc=menu();
system("cls");
switch (opc)
{ case 1: fifo(); break;
case 2: sjf(); break;
case 3: comparacion(); break;
}
}while (opc!=0);
}
void fifo()
{
class process
{
float tiemporafaga, tiempoespera, tiemporespuesta, tiempollegada, tiempofinal, tiemporetnorm, tiempofinal2;
class process *next, *ptr, *ptr2;
int max;
public:
process(){tiemporafaga=tiempoespera=tiemporespuesta=tiempollegada=tiempofinal=tiemporetnorm=tiempofinal2=0;};
void nuevo(void);
void fcfs(void);
}*front=NULL, *rear=NULL;
void process::nuevo(void)
{
float temp;
cout << " *Algoritmo de planificacion FIFO*" << endl;
cout << "Ingrese el numero de procesos a planificar: ";
cin >> max; cout << endl;
system ("cls");
class process *new_process;
for (int i=1; i<=max; i++)
{
new_process=new process;
do
{
do{
cout << "Ingrese tiempo de llegada del proceso: " << i << "=";
cin >> new_process->tiempollegada;
system("cls");
if ((new_process->tiempollegada)>=50)
{
system ("cls");
cout << "Tiempo de llegada invalido" << endl;
}
}while ((new_process->tiempollegada)>=50);
do{
cout << "Ingrese el tiempo de rafaga del proceso: " << i << "=";
cin >> new_process->tiemporafaga;
system("cls");
if ((new_process->tiemporafaga)>=50)
{
system("cls");
cout << "Tiempo de rafaga invalido" << endl;
}
}while ((new_process->tiemporafaga)>=50);
}while (new_process<=0);
if (front==NULL)
{
front=new_process;
ptr=front;
}
else
rear->next=new_process;
rear=new_process;
}
}
void process::fcfs(void)
{
float tiempotempfinal=0, tiempotemp=0, respuesta=0, tiempotemprespnorm=0, tiempoespera=0;
int suma=0, suma2=0;
system("cls");
cout << "Proceso Tiempo de Rafaga Tiempo de Llegada" << endl;
for (int i=1; i<=max; i++)
{
cout << i <<" "<< (ptr->tiemporafaga) <<" "<<(ptr->tiempollegada) << endl;
ptr=ptr->next;
}ptr=front;
cout << "Tiempo Final Tiempo de Respuesta Tiempo de Espera" << endl;
for (int i=1; i<=max; i++)
{
(ptr->tiempofinal)=tiempotempfinal +(ptr->tiempofinal)+(ptr->tiemporafaga);
tiempofinal = ptr->tiempofinal;
(ptr->tiemporespuesta)= (ptr->tiempofinal)-(ptr->tiempollegada);
respuesta = respuesta + (ptr->tiemporespuesta);
for (int i=1; i<=max; i++)
{
suma+=(ptr->tiemporafaga);
suma2+=(ptr->tiempollegada);
(ptr->tiempoespera)=suma-suma2;
}
//(ptr->tiemporetnorm)=(ptr->tiemporespuesta)/(ptr->tiemporafaga);
//tiempotemprespnorm=tiempotemprespnorm+(ptr->tiemporetnorm);
cout << (ptr->tiempofinal)<<" "<<(ptr->tiemporespuesta)<<" "<<(ptr->tiempoespera)<<endl;
ptr=ptr->next;
}
cout << "El tiempo de respuesta promedio es: " << respuesta/max<<endl;
cout << "El tiempo de espera promedio es: " << tiempotemprespnorm/max<<endl;
system ("pause");
return;
}
main(void)
{
process p;
p.nuevo();
p.fcfs();
system ("PAUSE");
}
}
void sjf()
{
int np, sre, ses, i, b, c;
float a, pre, pes, s, nM;
float Tll[50], TS[50], TScop[50], TCo[50], TFi[50], TRe[50], TEs[50];
{
cout<<" *Algoritmo de Planificacion SJF* " << endl;
cout<<"Ingrese el numero de procesos a planificar: ";
cin>>np; cout<<endl;
system("cls");
a=0; sre=0; ses=0;
for (i=0;i<np;i++)
{
do
{
cout<<"Ingrese el Tiempo de Llegada del proceso "<<i+1<<": ";
cin>>Tll[i]; cout<<endl;
system("cls");
if (Tll[i]>=50)
{
system("cls");
cout <<"Tiempo de llegada invalido" << endl;
}
}while (Tll[i]>=50);
do
{
cout<<"Ingrese el Tiempo de Rafaga del proceso "<<i+1<<": ";
cin>>TS[i]; cout<<endl;
system("cls");
if (TS[i]>=50)
{
system("cls");
cout <<"Tiempo de rafaga invalido" << endl;
}
}while (TS[i]>=50);
}
nM=TS[0];
for (i=1;i<np;i++)
{
if (TS[i]>nM)
nM=TS[i];
}
TCo[0]=0;
TFi[0]=TS[0];
for (i=0;i<np;i++)
{
TScop[i]=TS[i];
}
s=0; c=0;
do
{
b=1;
for (i=1;i<np;i++)
{
if (TScop[b]>TScop[i])
{
a=TScop[i];
b=i;
}
}
TCo[b]=TFi[c];
TFi[b]=TCo[b]+TS[b];
TScop[b]=nM+1;
c=b;
s=s+1;
}while(s<(np-1));
for (i=0;i<np;i++)
{
TRe[i]=TFi[i]-Tll[i];
sre=sre+TRe[i];
TEs[i]=TCo[i]-Tll[i];
ses=ses+TEs[i];
}
pre=sre/np;
pes=ses/np;
cout<<endl;
cout<<"Proceso T.Llegada T.Rafaga T.Comienzo T.Finalizacion T.Respuesta T.Espera"<<endl;
for (i=0;i<np;i++)
{
cout<<" "<<i<<" "<<Tll[i]<<" "<<TS[i]<<" "<<TCo[i]<<" "<<TFi[i]<<" "<<TRe[i]<<" "<<TEs[i]<<endl;
}
cout<<"Promedio de Tiempo de Respuesta: "<<pre<<endl;
cout<<"Promedio de Tiempo de Espera: "<<pes<<endl;
getch();
system("pause");
return;
}
}
void comparcaion()
{
}
int menu()
{
int opc;
cout << " MENU DE OPCIONES" << endl;
cout << "---------------------------------------------------------------" << endl;
cout << "Oprima un numero para elegir una de las siguientes opciones:"
cout << "1.-Algoritmo fifo" << endl;
cout << "2.-Algoritmo SJF"<< endl;
cout << "3.-Algoritmo ****" << endl;
cout << "4.-comparar resultados" << endl;
cout << "---------------------------------------------------------------" << endl;
cout << "Escoja su opcion= " << endl;
cin >> opc;
return opc;
}