El problema que tengo es que al intentar abrir el menu con un bucle, no me funcionan varias cosas, a pesar de no darme ningun error:
- si introduzco un numero mayor que el de las opciones que tengo, se imprime en pantalla la frase que he seleccionado, pidiendo otra vez el numero, pero luego no se reengancha al bucle
- si introduzco un numero que corresponda a una opcion del menu, me aparece el submenu asociado; elijo una opcion dentro de ese submenu, y me devuelve siempre la frase seleccionada para el caso en el que se elige la opcion 1...y ademas vuelve a pedir que elijamos opcion, a pesar de que hay un break
Os adjunto el código, a ver si alguien puede ayudarme, por favor!
Código:
#include <stdio.h> int main() { int opcion, accion; int cont=0; printf("\n\n\t0.\tCancelar operacion"); printf("\n\n\t1.\tUsuario"); printf("\n\n\t2.\tPuntos de interes"); printf("\n\n\t3.\tParadas"); printf("\n\n\t4.\tTransbordos"); printf("\n\n\t5.\tLineas"); printf("\n\n\n\tIntroduzca el numero de la accion que desea realizar: "); scanf("%d", &opcion); if(opcion>5) { printf("\n\n\tSe ha producido un error, por favor vuelva a introducir el numero de la accion que desea realizar: "); scanf("%d", &opcion); } else while(opcion<=5) { if(opcion==0) { printf("\n\n\tLa operacion ha sido abortada\n\n"); cont++; if(cont=1) break; } else while(opcion!=0) { switch(opcion) { case 1: printf("\n\n\t0.\tVolver"); printf("\n\t1.\tAnadir usuario"); printf("\n\t2.\tMostrar datos del usuario"); printf("\n\t3.\tModificar datos del usuario"); printf("\n\n\tElija una opcion: "); scanf("%d", &accion); if(accion>3) { printf("\n\tSe ha producido un error, por favor vuelva a elegir una opcion: "); scanf("%d", &accion); } if(accion=0) { printf("\n\n\t0.\tCancelar operacion"); printf("\n\n\t1.\tUsuario"); printf("\n\n\t2.\tPuntos de interes"); printf("\n\n\t3.\tParadas"); printf("\n\n\t4.\tTransbordos"); printf("\n\n\t5.\tLineas"); printf("\n\n\n\tIntroduzca el numero de la accion que desea realizar: "); scanf("%d", &opcion); } else if(accion=1) printf("\n\tHa elegido \"ANADIR USUARIO\"\n\n"); else if(accion=2) printf("\n\tHa elegido \"MOSTRAR DATOS DEL USUARIO\"\n\n"); else if(accion=3) printf("\n\tHa elegido \"MODIFICAR DATOS DEL USUARIO\"\n\n"); break; case 2: printf("\n\n\t0.\tVolver"); printf("\n\t1.\tAnadir puntos de interes"); printf("\n\t2.\tMostrar datos de los puntos de interes"); printf("\n\t3.\tModificar puntos de interes"); printf("\n\t4.\tEliminar punto de interes"); printf("\n\n\tElija una opcion: "); scanf("%d", &accion); if(accion>4) { printf("\n\tSe ha producido un error, por favor vuelva a elegir una opcion: "); scanf("%d", &accion); } if(accion=0) { printf("\n\n\t0.\tCancelar operacion"); printf("\n\n\t1.\tUsuario"); printf("\n\n\t2.\tPuntos de interes"); printf("\n\n\t3.\tParadas"); printf("\n\n\t4.\tTransbordos"); printf("\n\n\t5.\tLineas"); printf("\n\n\n\tIntroduzca el numero de la accion que desea realizar: "); scanf("%d", &opcion); } else if(accion=1) printf("\n\tHa elegido \"ANADIR PUNTO DE INTERES\"\n\n"); else if(accion=2) printf("\n\tHa elegido \"MOSTRAR DATOS DE LOS PUNTOS DE INTERES\"\n\n"); else if(accion=3) printf("\n\tHa elegido \"MODIFICAR DATOS DE LOS PUNTOS DE INTERES\"\n\n"); else if(accion=4) printf("\n\tHa elegido \"ELIMINAR PUNTO DE INTERES\"\n\n"); break; case 3: printf("\n\n\t0.\tVolver"); printf("\n\t1.\tAnadir parada"); printf("\n\t2.\tMostrar datos de parada"); printf("\n\t3.\tModificar datos de parada"); printf("\n\t4.\tEliminar parada"); printf("\n\n\tElija una opcion: "); scanf("%d", &accion); if(accion>4) { printf("\n\tSe ha producido un error, por favor vuelva a elegir una opcion: "); scanf("%d", &accion); } if(accion=0) { printf("\n\n\t0.\tCancelar operacion"); printf("\n\n\t1.\tUsuario"); printf("\n\n\t2.\tPuntos de interes"); printf("\n\n\t3.\tParadas"); printf("\n\n\t4.\tTransbordos"); printf("\n\n\t5.\tLineas"); printf("\n\n\n\tIntroduzca el numero de la accion que desea realizar: "); scanf("%d", &opcion); } else if(accion=1) printf("\n\tHa elegido \"ANADIR PARADA\"\n\n"); else if(accion=2) printf("\n\tHa elegido \"MOSTRAR DATOS DE PARADA\"\n\n"); else if(accion=3) printf("\n\tHa elegido \"MODIFICAR DATOS DE PARADA\"\n\n"); else if(accion=4) printf("\n\tHa elegido \"ELIMINAR PARADA\"\n\n"); break; case 4: printf("\n\n\t0.\tVolver"); printf("\n\t1.\tAnadir transbordo"); printf("\n\t2.\tMostrar datos de transbordo"); printf("\n\t3.\tModificar datos de transbordo"); printf("\n\t4.\tEliminar transbordo"); printf("\n\n\tElija una opcion: "); scanf("%d", &accion); if(accion>4) { printf("\n\tSe ha producido un error, por favor vuelva a elegir una opcion: "); scanf("%d", &accion); } if(accion=0) { printf("\n\n\t0.\tCancelar operacion"); printf("\n\n\t1.\tUsuario"); printf("\n\n\t2.\tPuntos de interes"); printf("\n\n\t3.\tParadas"); printf("\n\n\t4.\tTransbordos"); printf("\n\n\t5.\tLineas"); printf("\n\n\n\tIntroduzca el numero de la accion que desea realizar: "); scanf("%d", &opcion); } else if(accion=1) printf("\n\tHa elegido \"ANADIR TRANSBORDO\"\n\n"); else if(accion=2) printf("\n\tHa elegido \"MOSTRAR DATOS DE TRANSBORDO\"\n\n"); else if(accion=3) printf("\n\tHa elegido \"MODIFICAR DATOS DE TRANSBORDO\"\n\n"); else if(accion=4) printf("\n\tHa elegido \"ELIMINAR TRANSBORDO\"\n\n"); break; case 5: printf("\n\n\t0.\tVolver"); printf("\n\t1.\tAnadir linea"); printf("\n\t2.\tMostrar datos de linea"); printf("\n\t3.\tModificar datos de linea"); printf("\n\t4.\tEliminar linea"); printf("\n\n\tElija una opcion: "); scanf("%d", &accion); if(accion>4) { printf("\n\tSe ha producido un error, por favor vuelva a elegir una opcion: "); scanf("%d", &accion); } if(accion=0) { printf("\n\n\t0.\tCancelar operacion"); printf("\n\n\t1.\tUsuario"); printf("\n\n\t2.\tPuntos de interes"); printf("\n\n\t3.\tParadas"); printf("\n\n\t4.\tTransbordos"); printf("\n\n\t5.\tLineas"); printf("\n\n\n\tIntroduzca el numero de la accion que desea realizar: "); scanf("%d", &opcion); } else if(accion=1) printf("\n\tHa elegido \"ANADIR LINEA\"\n\n"); else if(accion=2) printf("\n\tHa elegido \"MOSTRAR DATOS DE LINEA\"\n\n"); else if(accion=3) printf("\n\tHa elegido \"MODIFICAR DATOS DE LINEA\"\n\n"); else if(accion=4) printf("\n\tHa elegido \"ELIMINAR LINEA\"\n\n"); break; } } } }