#include <iostream>
#include "Proceso.h"
#include "Registro.h"
#include "stdlib.h"
using namespace std;
void llenar(Proceso *pro)
{
string n_proceso, n_tarea;
int t;
cout << "Digite nombre del proceso" << endl;
cout << ">> ";
cin >> n_proceso;
pro->setNombreProceso(n_proceso);
cout << "Digite tiempo de uso del procesador" << endl;
cout << ">> ";
cin >> t;
pro->setTiempo(t);
cout << "Digite nombre de la tarea ejecutada" << endl;
cout << ">> ";
cin >> n_tarea;
pro->setNombreTarea(n_tarea);
}
void mostrar(Registro *obj)
{
for (int i = 0; i < obj->getTamano(); i++)
{
cout << "Nombre del proceso: " << obj->getVector(i)->getNombreProceso() << endl;
cout << "Tiempo de uso del procesador: " << obj->getVector(i)->getTiempo() << endl;
cout << "Nombre de la tarea: " << obj->getVector(i)->getNombreTarea() << endl << endl;
}
}
int menu()
{
int opcion;
do
{
cout << "======== MENÚ =======" << endl;
cout << "1. Mostrar registros" << endl;
cout << "2. Ordenar registros" << endl;
cout << "3. Salir" << endl;
cin >> opcion;
system("cls");
}
while (opcion < 1 || opcion > 3);
return opcion;
}
int main(void)
{
Registro *obj = new Registro();
Proceso *pro;
int opcion, tam;
cout << "Digite tamano del Vector" << endl;
cout << ">> ";
cin >> tam;
obj->setTamano(tam);
obj->crearVector();
for (int i = 0; i < obj->getTamano(); i++)
{
pro = new Proceso();
cout << "Llene la información del registro " << i << endl;
llenar(pro);
obj->setVector(i, pro);
}
do
{
opcion = menu();
switch(opcion)
{
case 1:
mostrar(obj);
break;
case 2:
obj->ordenar();
cout << "REGISTROS ORDENADOS!" << endl;
break;
default:
break;
}
}
while (opcion != 3);
}
#ifndef PROCESO_H
#define PROCESO_H
#include <iostream>
using namespace std;
class Proceso
{
public:
Proceso();
virtual ~Proceso();
void setNombreProceso(string val);
string getNombreProceso();
void setTiempo(int val);
int getTiempo();
void setNombreTarea(string val);
string getNombreTarea();
protected:
private:
string nombre_proceso;
int tiempo;
string nombre_tarea;
};
#endif
#include "Proceso.h"
Proceso::Proceso()
{
nombre_proceso = "";
tiempo = 0;
nombre_tarea = "";
}
Proceso::~Proceso()
{
}
void Proceso::setNombreProceso(string val)
{
nombre_proceso = val;
}
string Proceso::getNombreProceso()
{
return nombre_proceso;
}
void Proceso::setTiempo(int val)
{
tiempo = val;
}
int Proceso::getTiempo()
{
return tiempo;
}
void Proceso::setNombreTarea(string val)
{
nombre_tarea = val;
}
string Proceso::getNombreTarea()
{
return nombre_tarea;
}
#ifndef REGISTRO_H
#define REGISTRO_H
#include "Proceso.h"
#include <iostream>
using namespace std;
class Registro
{
public:
Registro();
virtual ~Registro();
void setTamano(int val);
int getTamano();
void setVector(int pos, Proceso *val);
Proceso *getVector(int pos);
void crearVector();
void cambiar(int p1, int p2);
void ordenar();
protected:
private:
int tamano;
Proceso *vector;
};
#endif
#include "Registro.h"
Registro::Registro()
{
tamano = 0;
vector = NULL;
}
Registro::~Registro()
{
}
void Registro::setTamano(int val)
{
tamano = val;
}
int Registro::getTamano()
{
return tamano;
}
void Registro::setVector(int pos, Proceso *val)
{
vector[pos] = *val;
}
Proceso *Registro::getVector(int pos)
{
return &vector[pos];
}
void Registro::crearVector()
{
vector = new Proceso[tamano];
}
void Registro::cambiar(int p1, int p2)
{
Proceso *temp = getVector(p1);
setVector(p1, getVector(p2));
setVector(p2, temp);
}
void Registro::ordenar()
{
for (int i = 0; i < getTamano(); i++)
{
for (int j = i+1; j < getTamano(); j++)
{
if (getVector(i)->getTiempo() > getVector(j)->getTiempo())
{
cambiar(i, j);
}
}
}
}