Bucle infinito en Round Robin
Publicado por C.4 (6 intervenciones) el 07/10/2018 04:27:45
Tengo dos problemas con mi programa, el primero es que la impresión de la lista me imprime mal y el el segundo es que al momento de hacer los procesos se queda en un bucle infinito y no los descarta, agradezco mucho su ayuda.
Saludos.
Saludos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include<iostream>
using namespace std;
struct Nodo{
int dato;
char nombre;
Nodo *sig;
};
void insertar_procesos(Nodo *&,Nodo *&,int,char );
void hacer_procesos(Nodo *&,Nodo *&,int, char );
void mostrar(Nodo *);
void menu();
Nodo *frente=NULL;
Nodo *final=NULL;
int main(){
menu();
}
void menu(){
int opc;
int var;
char nomb;
do{
cout<<"!!!MENU DE ROUND ROBIN!!!"<<endl;
cout<<"1)para ingresar los procesos de la lista: "<<endl;
cout<<"2)para hacer los procesos de la lista:"<<endl;
cout<<"3)para mostrar todos los procesos de la lista: "<<endl;
cout<<"4) para salir:"<<endl;
cout<<"opcion"<<endl;
cin>>opc;
switch (opc){
case 1:
cout<<"digite el tiempo de proceso:"<<endl;
cin>>var;
cout<<"digite el nombre del proceso:"<<endl;
cin>>nomb;
insertar_procesos(frente,final,var,nomb);
cout<<"\n";
system("pause");
break;
case 2:
hacer_procesos(final,frente,var,nomb);
cout<<"\n";
system("pause");
break;
case 3:
mostrar(frente);
cout<<"\n";
system("pause");
break;
}
system("cls");
}while(opc!=4);
}
void insertar_procesos(Nodo *&final,Nodo *&frente,int var,char nomb){
Nodo* nuevonodo = new Nodo();
nuevonodo->dato=var;
nuevonodo->nombre=nomb;
if(frente==NULL){
frente = nuevonodo;
frente->sig = frente;
final= frente;
}
else{
final->sig=nuevonodo;
nuevonodo->sig=frente;
final=nuevonodo;
}
cout<<"proceso ingresado corectamente"<<endl;
}
void hacer_procesos(Nodo *&final,Nodo *&frente,int var,char nomb){
int cuantum;
int cont;
Nodo *aux;
Nodo *antes;
aux= frente;
cout<<"digite el valor de el cuantum"<<endl;
cin>>cuantum;
while (aux!=NULL){
cout<<"desarrollando el proceso "<<aux->nombre<< ", tiempo de procesamiento restante: "<<aux->dato<<endl;
aux->dato= aux->dato - cuantum;
if(aux->dato==0){
if(aux==frente){
frente=frente->sig;
final->sig=frente;
delete aux;
}
else if(aux==final){
antes->sig=frente;
final=antes;
delete aux;
}
else{
antes->sig=aux->sig;
delete aux;
}
cout<<"proceso "<<aux->nombre<< " completado correctamente."<<endl;
}
else{
antes=aux;
aux=aux->sig;
}
}
}
void mostrar(Nodo *frente){
Nodo *aux = new Nodo();
aux = frente;
if(frente!=NULL){
do{
cout<< aux->nombre<<" ->";
aux=aux->sig;
}while(aux!=frente);
}
else{
cout<<"la lista esta vacia"<<endl;
}
}
Valora esta pregunta


0