[C] Consulta código

Iniciado por Donka, 13 Marzo 2015, 23:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Donka

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.  :)





Código (cpp) [Seleccionar]
#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

dainodaibouken

No ocupas tantos switch, solo ocupas 1 wsitch y un do while.

Donka

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

NOIS

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!
NOIS dev7