Dev - C++ - Bucle infinito en menu

 
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 menu

Publicado por C.4 (6 intervenciones) el 30/08/2018 18:47:20
Hola, tenia que hacer un programa con menú de listas, lo pude realizar la lógica de la lista esta sin errores pero cuando decidí colocar el menú se queda en un bucle infinito, me pueden ayudar solo a arreglar la parte del menú?
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
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Nodo{
	int dato;
	Nodo *sig;
};
 
void insertarvacia(Nodo *&,Nodo *&,int);
void insertarconaux(Nodo *&,Nodo *&,int);
void mostrar(Nodo *);
void menu();
 
 
Nodo *frente=NULL;
Nodo *final=NULL;
 
int main(){
 
menu();
 
 
}
 
void menu(){
	int opc;
	int var;
	do{
		cout<<"!!!MENU DE LISTA!!!"<<endl;
		cout<<"1)para ingresar el primer nodo de la lista: "<<endl;
		cout<<"2)para ingresar los demas nodos de la lista: "<<endl;
      	cout<<"3)para mostar los elementos de la lista: "<<endl;
        cout<<"4) para salir:"<<endl;
        switch (opc){
        	case 1:
                cout<<"digite el dato:"<<endl;
                cin>>var;
                insertarvacia(frente,final,var);
                cout<<"\n";
 
                break;
        	case 2:
    		    cout<<"digite el dato:"<<endl;
                cin>>var;
                insertarconaux(frente,final,var);
                cout<<"\n";
 
		        break;
        	case 3:
        		mostrar(frente);
        		cout<<"\n";
 
			    break;
		}
 
	}while(opc!=4);
}
 
 
void insertarvacia(Nodo *& frente,Nodo *&final,int var){
	Nodo *nuevonodo= new Nodo();
	nuevonodo->dato=var;
	nuevonodo->sig=NULL;
	frente=nuevonodo;
	final=nuevonodo;
 
}
 
void insertarconaux(Nodo *&frente,Nodo *&final,int var){
    Nodo *aux;
    Nodo *nuevonodo= new Nodo();
    char opc;
    nuevonodo->dato=var;
    nuevonodo->sig=NULL;
    aux=frente;
	if(aux==frente){
		cout<<"desea ingresar el valor como primero en la lista? s/n:";
        cin>>opc;
        if(opc=='s'){
            nuevonodo->sig=frente;
            frente=nuevonodo;
        }
	}
 
	while(aux!=NULL){
		if(aux==final){
			cout<<"desea ingresar el valor como ultimo en la lista? s/n:";
	    	cin>>opc;
            if(opc=='s'){
				final->sig=nuevonodo;
				final=nuevonodo;
            }
        }
        else {
			cout<<"desea ingresar el valor despues del valor "<<aux->dato<<" ? s/n: " ;
	    	cin>>opc;
	    	if(opc=='s'){
				nuevonodo->sig=aux->sig;
				aux->sig=nuevonodo;
            }
        }
        aux=aux->sig;
    }
}
 
 
void mostrar(Nodo *frente){
    Nodo *aux= new Nodo();
    aux=frente;
    while(aux!=NULL){
        cout<<aux->dato<<" -> ";
        aux=aux->sig;
    }
}
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
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Bucle infinito en menu

Publicado por dario (718 intervenciones) el 31/08/2018 07:04:38
Hola, te falto leer la variable opc despues de la opcion 4:
cout << "4. Para salir"
cin >> opc //te falto esto.
Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar