elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Consulta código
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Consulta código  (Leído 1,648 veces)
Donka

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[C] Consulta código
« en: 13 Marzo 2015, 23:56 pm »

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
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.    int opcion, eleccion, eleccion2, respuesta, rta;
  8.  
  9.    menu0:
  10.    printf("\t\t---------BIENVENIDO---------\n");
  11.  
  12.    printf("Ingrese la opcion a realizar:\n");
  13.  
  14.    printf("1.- Ingresar clave\n");
  15.    printf("2.- Salir\n\n");
  16.    scanf("%d", &opcion);
  17.    system("cls");
  18.  
  19. switch(opcion)
  20. {
  21.    menu1:
  22. case 1: system("cls");
  23.                        printf("1 - Mostrar ciudades\n");
  24.                        printf("2 - Ingresar ciudades\n");
  25.                        printf("8 - VOLVER MENU PRINCIPAL\n\n");
  26.                        scanf("%d", &respuesta);
  27.                        system("cls");
  28.  
  29.                        switch(respuesta)
  30.                        {
  31.                            menu11:
  32.                            case 1: printf("\t-------- CIUDADES --------\n\n");
  33.                                    printf("1) Ver Barcelona\n");
  34.                                    printf("2) VOLVER\n");
  35.                                    scanf("%d", &eleccion);
  36.                                    system("cls");
  37.  
  38.  
  39.                                    switch(eleccion)
  40.                                    {
  41.                                        case 1: printf("Cargando Barcelona...\n\n");
  42.                                                printf("2.- VOLVER\n\n");
  43.                                        scanf("%d", &rta);
  44.                                        system("cls");
  45.  
  46.                                         if(rta==2)
  47.                                                goto menu11;
  48.  
  49.                                        case 2: goto menu1;
  50.                                    }
  51.                            menu12:
  52.                            case 2: printf("\t-------- INGRESAR CIUDADES --------\n\n");
  53.                                    printf("1) Nueva ciudad\n");
  54.                                    printf("2) VOLVER\n");
  55.                                    scanf("%d", &eleccion2);
  56.                                    system("cls");
  57.  
  58.                                    switch(eleccion2)
  59.                                    {
  60.                                        case 1: printf("Ingresando ciudad...\n\n");
  61.                                                printf("2.- VOLVER\n\n");
  62.                                        scanf("%d", &rta);
  63.                                        system("cls");
  64.  
  65.                                        if(rta==2)
  66.                                                goto menu12;
  67.  
  68.                                        case 2: goto menu1;
  69.                                    }
  70.  
  71.  
  72.  
  73.  
  74.                            case 8: printf("1.- \n");
  75.                                    printf("2.- VOLVER\n");
  76.                                    system("cls");
  77.                                    goto menu0;
  78.  
  79.  
  80.                            default:    system("cls");
  81.                                        printf("\t\tERROR\n\tINGRESAR OPCION 1 - 8\n\n\n");
  82.                                        system("pause");
  83.                                        system("cls");
  84.                                        goto menu1;
  85.                        }
  86.  
  87.                        break;
  88.  
  89. case 2: printf("CERRANDO SISTEMA...\n\n\n");
  90.                        break;
  91.  
  92.                default:system("cls");
  93.                        printf("\t\tERROR\n\tINGRESAR OPCION 1 - 2\n\n\n");
  94.                        system("pause");
  95.                        system("cls");
  96.                        goto menu0;
  97. }
  98.  
  99. }
  100.  

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


« Última modificación: 14 Marzo 2015, 09:32 am por engel lex » En línea

dainodaibouken

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: [C] Consulta código
« Respuesta #1 en: 14 Marzo 2015, 00:30 am »

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


En línea

Donka

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [C] Consulta código
« Respuesta #2 en: 14 Marzo 2015, 03:23 am »

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
En línea

NOIS

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: [C] Consulta código
« Respuesta #3 en: 14 Marzo 2015, 08:55 am »

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!
En línea

NOIS dev7
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
consulta codigo
Java
juang06 1 2,796 Último mensaje 23 Abril 2010, 21:01 pm
por Cuantico
Problema con codigo php ( consulta y ejecucion )
PHP
XXXXXX 9 3,340 Último mensaje 9 Agosto 2010, 01:30 am
por Shell Root
Consulta parte codigo
Programación Visual Basic
sersik 3 2,057 Último mensaje 12 Septiembre 2013, 23:34 pm
por sersik
Consulta sobre código « 1 2 »
Java
SebastianJava 18 8,348 Último mensaje 29 Octubre 2013, 03:02 am
por SebastianJava
[CONSULTA] Error en mi código.
Java
VictorProject 2 1,830 Último mensaje 13 Agosto 2019, 18:50 pm
por VictorProject
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines