Dev - C++ - Bucle infinito en Round Robin

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

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.


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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder