Se desea gestionar un sistema de registro, para las aplicaciones que se dan de alta en el sistema, los datos son: nombre del proceso, tiempo de uso del procesador, nombre de la tarea ejecutada. Ordene los registros de menor a mayor teniendo como criterio, el tiempo de uso del procesador.

#include <iostream>
#include "Proceso.h"
#include "Registro.h"
#include "stdlib.h"
using namespace std;
// método para llenar el vector
void llenar(Proceso *pro)
{
// pedimos el nombre del proceso
string n_proceso, n_tarea;
int t;
cout << "Digite nombre del proceso" << endl;
cout << ">> ";
cin >> n_proceso;
// encapsulamos la variable n_proceso
pro->setNombreProceso(n_proceso);
// pedimos el tiempo de uso del procesador
cout << "Digite tiempo de uso del procesador" << endl;
cout << ">> ";
cin >> t;
// encapsulamos la variable t
pro->setTiempo(t);
// pedimos el nombre de la tarea
cout << "Digite nombre de la tarea ejecutada" << endl;
cout << ">> ";
cin >> n_tarea;
// encapsulamos la variable n_tarea
pro->setNombreTarea(n_tarea);
}
// método para mostrar la informacion del vector
void mostrar(Registro *obj)
{
// recorremos el vector con el ciclo for
for (int i = 0; i < obj->getTamano(); i++)
{
// acumulamos en la variable datos la informacion que haya en la posicion i del vector
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;
}
}
// método para mostrar el menu de opciones
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)
{
// creamos un objeto de la clase Registro (Instanciación)
Registro *obj = new Registro();
// declaramos un objeto de la clase Proceso
Proceso *pro;
int opcion, tam;
// pedimos el tamaño del vector
cout << "Digite tamano del Vector" << endl;
cout << ">> ";
cin >> tam;
// encapsulamos la variable tam
obj->setTamano(tam);
// creamos el vector
obj->crearVector();
// recorremos el vector con el ciclo for
for (int i = 0; i < obj->getTamano(); i++)
{
// creamos un nuevo objeto de la clase Proceso
pro = new Proceso();
cout << "Llene la información del registro " << i << endl;
// llenamos la informacion de ese objetos
llenar(pro);
// guardamos en la posicion i el objeto pro
obj->setVector(i, pro);
}
do
{
// le asignamos a la variable opcion el valor que retorne el metodo menu
opcion = menu();
// dependiendo del valor que tenga la variabl opcion se seleccionara un caso
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:
// de declaran los atributos privados de la clase
string nombre_proceso;
int tiempo;
string nombre_tarea;
};
#endif // PROCESO_H
#include "Proceso.h"
Proceso::Proceso()
{
// se le asignan valores por defecto a los atributos en el constructor
nombre_proceso = "";
tiempo = 0;
nombre_tarea = "";
}
Proceso::~Proceso()
{
//dtor
}
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:
// de declaran los atributos privados de la clase
int tamano;
Proceso *vector;
};
#endif // REGISTRO_H
#include "Registro.h"
Registro::Registro()
{
tamano = 0;
vector = NULL;
}
Registro::~Registro()
{
//dtor
}
// métodos Setters y Getters de los atributos de la clase
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];
}
// método para crear el vector
void Registro::crearVector()
{
// le asignamos al vector de tipo Proceso un tamaño del valor de la variable tamano
vector = new Proceso[tamano];
}
void Registro::cambiar(int p1, int p2)
{
// inicializamos una variable de tipo proceso en el valor que haya en la posicion p1 del vector
Proceso *temp = getVector(p1);
// en la poscion p1 le asignamos el valor que haya en la posicion p2 del vector
setVector(p1, getVector(p2));
// en la poscion p2 le asignamos el valor que haya en la variable temp
setVector(p2, temp);
}
// método para ordenar por el tiempo de uso
void Registro::ordenar()
{
// recorremos con el ciclo for el vector
for (int i = 0; i < getTamano(); i++)
{
// con el otro ciclo for recorremos la siguiente posicion de i
for (int j = i+1; j < getTamano(); j++)
{
// si la el tiempo de la posicion i del vector es mayor a su siguiente posicion
if (getVector(i)->getTiempo() > getVector(j)->getTiempo())
{
// entonces cambiamos esas posiciones
cambiar(i, j);
}
}
}
}
import javax.swing.JOptionPane;
public class Main
{
// método para llenar el vector
public static void llenar(Proceso pro)
{
// pedimos el nombre del proceso
String n_proceso = JOptionPane.showInputDialog("Digite nombre del proceso:");
// encapsulamos la variable n_proceso
pro.setNombreProceso(n_proceso);
// pedimos el tiempo de uso del procesador
int t = Integer.parseInt(JOptionPane.showInputDialog("Digite tiempo de uso del procesador:"));
// encapsulamos la variable t
pro.setTiempo(t);
// pedimos el nombre de la tarea
String n_tarea = JOptionPane.showInputDialog("Digite nombre de la tarea ejecutada:");
// encapsulamos la variable n_tarea
pro.setNombreTarea(n_tarea);
}
// método para mostrar la informacion del vector
public static void mostrar(Registro obj)
{
String datos = "";
// recorremos el vector con el ciclo for
for (int i = 0; i < obj.getTamaño(); i++)
{
// acumulamos en la variable datos la informacion que haya en la posicion i del vector
datos += "Nombre del proceso: " + obj.getVector(i).getNombreProceso() + "\n" +
"Tiempo de uso del procesador: " + obj.getVector(i).getTiempo() + "\n" +
"Nombre de la tarea: " + obj.getVector(i).getNombreTarea() + "\n\n";
}
// mostramos la variable datos
JOptionPane.showMessageDialog(null, datos);
}
// método para mostrar el menu de opciones
public static int menu()
{
int opcion;
do
{
opcion = Integer.parseInt(JOptionPane.showInputDialog(
"======== MENÚ =======\n" +
"1. Mostrar registros\n" +
"2. Ordenar registros\n" +
"3. Salir"));
}
while (opcion < 1 || opcion > 3);
return opcion;
}
public static void main(String[] args)
{
// creamos un objeto de la clase Registro (Instanciación)
Registro obj = new Registro();
// declaramos un objeto de la clase Proceso
Proceso pro;
int opcion;
// pedimos el tamaño del vector
int tam = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite tamaño del Vector:"));
// encapsulamos la variable tam
obj.setTamaño(tam);
// creamos el vector
obj.crearVector();
// recorremos el vector con el ciclo for
for (int i = 0; i < obj.getTamaño(); i++)
{
// creamos un nuevo objeto de la clase Proceso
pro = new Proceso();
JOptionPane.showMessageDialog(null, "Llene la información del registro " + i);
// llenamos la informacion de ese objetos
llenar(pro);
// guardamos en la posicion i el objeto pro
obj.setVector(i, pro);
}
do
{
// le asignamos a la variable opcion el valor que retorne el metodo menu
opcion = menu();
// dependiendo del valor que tenga la variabl opcion se seleccionara un caso
switch(opcion)
{
case 1:
mostrar(obj);
break;
case 2:
obj.ordenar();
JOptionPane.showMessageDialog(null, "¡REGISTROS ORDENADOS!");
break;
default:
break;
}
}
while (opcion != 3);
}
}
public class Proceso
{
// de declaran los atributos privados de la clase
private String nombre_proceso;
private int tiempo;
private String nombre_tarea;
public Proceso()
{
// se le asignan valores por defecto a los atributos en el constructor
nombre_proceso = "";
tiempo = 0;
nombre_tarea = "";
}
// métodos Setters y Getters de los atributos de la clase
public void setNombreProceso(String val)
{
nombre_proceso = val;
}
public String getNombreProceso()
{
return nombre_proceso;
}
public void setTiempo(int val)
{
tiempo = val;
}
public int getTiempo()
{
return tiempo;
}
public void setNombreTarea(String val)
{
nombre_tarea = val;
}
public String getNombreTarea()
{
return nombre_tarea;
}
}
public class Registro
{
// de declaran los atributos privados de la clase
private int tamaño;
private Proceso [] vector;
public Registro()
{
// se le asignan valores por defecto a los atributos en el constructor
tamaño = 0;
vector = null;
}
// métodos Setters y Getters de los atributos de la clase
public void setTamaño(int val)
{
tamaño = val;
}
public int getTamaño()
{
return tamaño;
}
public void setVector(int pos, Proceso val)
{
vector[pos] = val;
}
public Proceso getVector(int pos)
{
return vector[pos];
}
// método para crear el vector
public void crearVector()
{
// le asignamos al vector de tipo Proceso un tamaño del valor de la variable tamaño
vector = new Proceso[tamaño];
}
// método para cambiar dos posicion del vector
public void cambiar(int p1, int p2)
{
// inicializamos una variable de tipo proceso en el valor que haya en la posicion p1 del vector
Proceso temp = getVector(p1);
// en la poscion p1 le asignamos el valor que haya en la posicion p2 del vector
setVector(p1, getVector(p2));
// en la poscion p2 le asignamos el valor que haya en la variable temp
setVector(p2, temp);
}
// método para ordenar por el tiempo de uso
public void ordenar()
{
// recorremos con el ciclo for el vector
for (int i = 0; i < getTamaño(); i++)
{
// con el otro ciclo for recorremos la siguiente posicion de i
for (int j = i+1; j < getTamaño(); j++)
{
// si la el tiempo de la posicion i del vector es mayor a su siguiente posicion
if (getVector(i).getTiempo() > getVector(j).getTiempo())
{
// entonces cambiamos esas posiciones
cambiar(i, j);
}
}
}
}
}