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
