Código
#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; }
El código no esta terminado si se dan cuenta. También me gustaría saber si hay alguna forma de escribir un sub-proceso en modular dentro del proceso principal también en modular que es masomenos lo que intente hacer. Gracias y espero me ayuden.