Estoy aprendiendo el lenguaje y al programar este código me sugirieron que modifique los "goto" y los "menuX", ya que quedan abiertos en memoria una vez llamados :huh:
La idea del código es bastante simple, estar en un menu principal con varias opciones y poder ir y volver entre ellas.
Alguien me puede orientar un poco sobre las modificaciones que le tengo que hacer para que sea más eficiente?
Desde ya muchas gracias. :)
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int opcion, eleccion, eleccion2, respuesta, rta;
menu0:
printf("\t\t---------BIENVENIDO---------\n");
printf("Ingrese la opcion a realizar:\n");
printf("1.- Ingresar clave\n");
printf("2.- Salir\n\n");
scanf("%d", &opcion);
system("cls");
switch(opcion)
{
menu1:
case 1: system("cls");
printf("1 - Mostrar ciudades\n");
printf("2 - Ingresar ciudades\n");
printf("8 - VOLVER MENU PRINCIPAL\n\n");
scanf("%d", &respuesta);
system("cls");
switch(respuesta)
{
menu11:
case 1: printf("\t-------- CIUDADES --------\n\n");
printf("1) Ver Barcelona\n");
printf("2) VOLVER\n");
scanf("%d", &eleccion);
system("cls");
switch(eleccion)
{
case 1: printf("Cargando Barcelona...\n\n");
printf("2.- VOLVER\n\n");
scanf("%d", &rta);
system("cls");
if(rta==2)
goto menu11;
case 2: goto menu1;
}
menu12:
case 2: printf("\t-------- INGRESAR CIUDADES --------\n\n");
printf("1) Nueva ciudad\n");
printf("2) VOLVER\n");
scanf("%d", &eleccion2);
system("cls");
switch(eleccion2)
{
case 1: printf("Ingresando ciudad...\n\n");
printf("2.- VOLVER\n\n");
scanf("%d", &rta);
system("cls");
if(rta==2)
goto menu12;
case 2: goto menu1;
}
case 8: printf("1.- \n");
printf("2.- VOLVER\n");
system("cls");
goto menu0;
default: system("cls");
printf("\t\tERROR\n\tINGRESAR OPCION 1 - 8\n\n\n");
system("pause");
system("cls");
goto menu1;
}
break;
case 2: printf("CERRANDO SISTEMA...\n\n\n");
break;
default:system("cls");
printf("\t\tERROR\n\tINGRESAR OPCION 1 - 2\n\n\n");
system("pause");
system("cls");
goto menu0;
}
}
PD: No encontre la forma de cargar el código en esa ventanilla blanca :P
Mod: Para publicar código usa las etiquetas GeSHi que están ubicadas arriba a la derecha de los emoticonos en el editor de tema
No ocupas tantos switch, solo ocupas 1 wsitch y un do while.
Utilizo unicamente el switch(opcion) ?
Y un do while que valide la entrada de datos del primer menu?
Como hago para volver al menu principal desde una 2da pantalla?
Gracias por la respuesta :D
No uses el goto nunca mientras puedas evitarlo, es una mala costumbre de programación ya que pierdes el sentido de estructuración de como aplicar la lógica y una organización correcta.
Lo suyo sería crear funciones para cada opción, incluidos los menús, y llamarlas en función de la respuesta obtenida. Te valdría con un switch, incluso sin eso si usas if, else y cuando quieras volver al menú inicial solo tienes que llamar a la función asociada.
Espero que te ayude.
Saludos!