Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: hackmundy en Junio 25, 2014, 06:43:27 am

Título: Como hago para regresar al menu
Publicado por: hackmundy en Junio 25, 2014, 06:43:27 am
Hola como estan a los tiempos , hoy tengo una dudo espero no molestar a nadie.. como hago para regresar al menu e intentado con while , do while y nada este es el codigo:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4.  
  5. void main ()
  6. {
  7. unsigned char op;
  8. short bucle = 1;
  9. int menu;
  10. float x,d,c,a,b,raiz,m,n,x1,x2;
  11.  
  12. do{
  13.    printf ("Universidad de Guayaquil .... Menu de Opciones........\n\n\n");
  14.    printf ("1.- Ecuaciones de 1er Grado\n");
  15.    printf ("2.- Ecuaciones de 2do Grado\n");
  16.    printf ("3.- Salir del Programa\n\n\n");
  17.    printf ("Elija Una Opcion: ");
  18.    scanf ("%d",&menu);
  19.    clrscr ();
  20.    }while (!(menu>=1 && menu<=3));
  21.  
  22. switch (menu)
  23. {
  24.  case 1:
  25.  while (bucle)
  26.  {
  27.  clrscr ();
  28.  printf ("Ecuaciones de Primer Grado ........ 8x+20=0 ........ \n\n\n");
  29.  printf ("\nIngrese el Coeficiente X: ");
  30.  scanf ("%f",&c);
  31.  printf ("\nIngrese el Termino Independiente: ");
  32.  scanf ("%f",&d);
  33.  if (c == 0)
  34.  {
  35.  printf ("\nEl numero que ingreso es Cero y no hay divicion para cero");
  36.  }
  37.  else
  38.  {
  39.  x=-d/c;
  40.  printf ("\nEl resultado de la Ecuacion es: %.2f ",x);
  41.  }
  42.  // Opcion para preguntar si desea volver a intentarlo
  43.  printf("\n\nHacer otra ecuacion [s/n]?");
  44.       op = 0;
  45.       while (op!='s' && op!='n') {
  46.          scanf("%c",&op);
  47.          if (op=='n') bucle = 0;
  48.       }
  49.       if (!bucle){
  50.       clrscr ();
  51.       printf("\nFin del Programa...\n\n creado por Curso SJ1 Nocturno.....\n\n\n   Profesor Ing Angel Ochoa");
  52.       }
  53.    }
  54.  break;
  55.  
  56.  case 2:
  57.  while (bucle)
  58.  {
  59.  do{
  60.     clrscr ();
  61.     printf ("Ecuaciones de Segundo Grado ........ \n\n\n");
  62.     printf ("\nIngrese el Valor de A: ");
  63.     scanf ("%f",&a);
  64.     }while (a == 0);
  65.  
  66. printf ("\nIngrese el Valor de B: ");
  67. scanf ("%f",&b);
  68. printf ("\nIngrese el Valor de C: ");
  69. scanf ("%f",&c);
  70.  
  71. m = (b*b)-(4*a*c);
  72. if (m > 0)
  73. {
  74.  n = (2*a);
  75.  raiz = sqrt(m);
  76.  x1 = (-b-raiz)/n;
  77.  x2 = (-b+raiz)/n;
  78.  printf ("\nEl resultado de X1 es: %.2f ",x1);
  79.  printf ("\nEl resultado de X2 es: %.2f ",x2);
  80. }
  81. else
  82. {
  83.  printf ("\nLa Ecuacion no tiene Solucion Real.. Porque no hay raiz negativa...");
  84. }
  85. // Opcion para preguntar si desea volver a intentarlo
  86. printf("\n\nHacer otra ecuacion [s/n]?");
  87.       op = 0;
  88.       while (op!='s' && op!='n') {
  89.          scanf("%c",&op);
  90.          if (op=='n') bucle = 0;
  91.       }
  92.       if (!bucle){
  93.       clrscr ();
  94.       printf("\nFin del Programa...\n\n creado por  Curso SJ1 Nocturno.....\n\n\n   Profesor Ing Angel Ochoa");
  95.       }
  96.    }
  97. break;
  98.  
  99. case 3:
  100. printf ("Saliendo del Programa... Gracias por usarlo Universidad de Guayaquil...");
  101. printf ("\nCreado por ..... Profesor Ing Angel Ochoa....");
  102. break;
  103. }
  104.  
  105. getch ();
  106.  
  107. }

saludos espero no haber molestado

___edited___
seleccion de codigo - C
Título: Re:Como hago para regresar al menu
Publicado por: b10s_0v3rr1d3 en Junio 25, 2014, 09:51:31 am
hi

para lo que comentas, puedes poner dicho menu en una funcion a la cual puedes ir llamando desde la main y luego una vez terminado el trabajo con una opcion, volviendola a llamar.
por ejemplo

main() => menu().....
optionX() [terminado el work de la opcion] => menu().....

y asi sucesivamente, puedes poner las distintas opciones en distintas funciones para ir llamandolas cuando quieras, eso te permite ir volviendo a una funcion u otra cuando lo requieras.

nos leemos
Título: Re:Como hago para regresar al menu
Publicado por: ragdoll999 en Junio 25, 2014, 07:34:18 pm
Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int v,v1,v2; //variables de mdo, v01 y v02
  4. int main(void){
  5. mdo: //etiqueta que lleva al menu principal
  6. system("cls");
  7. printf("REGRESAR AL MENU EN TODO MOMENTO\n");
  8. printf("0.- Regresar al menu\n");
  9. printf("1.- Ecuaciones de 1er grado\n");
  10. printf("2.- Ecuaciones de 2do grado\n");
  11. printf("3.- Salir\n");
  12. printf("Elija una opcion: ");
  13. scanf("%d",&v);
  14. if (v==0) goto mdo;
  15. if (v==1) goto v01;
  16. if (v==2) goto v02;
  17. if (v==3){
  18. printf("HA FINALIZADO EL PROGRAMA\n");
  19. return 9;
  20. }
  21. v01:
  22. system("cls");
  23. printf("escriba 0 para volver al menu: ");
  24. scanf("%d",&v1); //esto es obligatorio
  25. printf("\\1\\ escribiste %d\n",v1); //aqui va lo que quieras
  26. if (v1==0) goto mdo;
  27. return 0;
  28. v02:
  29. system("cls");
  30. printf("escriba 0 para volver al menu: ");
  31. scanf("%d",&v2); //esto es obligatorio
  32. printf("\\2\\ escribiste %d\n",v2); //aqui va lo que quieras
  33. if (v2==0) goto mdo;
  34. return 1;
  35. }

tambien se pueden hacer con funciones, pero quise hacerlo con goto...
Título: Re:Como hago para regresar al menu
Publicado por: b10s_0v3rr1d3 en Junio 25, 2014, 09:06:17 pm
@ragdoll999: aunque el goto puede llegar a utilizarse en algun momento muy puntual, es una mala practica y habito en la programacion y no se recomienda para nada dicho uso....

puede dar como resultado codigo que a la larga pueda ser complejo de entender cuando seguramente el codigo es realmente sencillo pero gracias a esta instruccion dificulta la lectura.

nos leemos
Título: Re:Como hago para regresar al menu
Publicado por: ragdoll999 en Junio 25, 2014, 10:04:45 pm
Sé que no se recomienda, pero me parecio más corto y sencillo mostrarle el uso de goto, es enredado tratar con numeros, y las funciones no son tan sencillas como parecen. Saludos.

(por cierto, como bien dijo la persona de arriba, se recomienda usar funciones para ese proposito).
Título: Re:Como hago para regresar al menu
Publicado por: hackmundy en Junio 27, 2014, 05:53:00 am
muchas gracias a todos , Si es verdad lo del goto , y de las funciones tambien, ya lo pude lograr con el bucle do while, lo intente con las funciones pero me confundio un poco...

gracias a todos.
saludos
Título: Re:Como hago para regresar al menu
Publicado por: Kheops en Julio 31, 2014, 04:14:57 am
Espero que este menú te funcione

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int opc=0; // Declaramos opc de manera global
  6.  
  7. int main()
  8. {  
  9.  menu();
  10. }
  11.  
  12. void menu()
  13. {
  14.   opc=0;
  15.  
  16. while (opc != 3)
  17.  {
  18.      
  19.      
  20.      
  21.     system("Color 7F");
  22.     system("cls");
  23.     printf("REGRESAR AL MENU EN TODO MOMENTO\n");
  24.     printf("0.- Regresar al menu\n");
  25.     printf("1.- Ecuaciones de 1er grado\n");
  26.     printf("2.- Ecuaciones de 2do grado\n");
  27.     printf("3.- Salir\n");
  28.     scanf("%d",&opc);
  29.  
  30.     switch (opc)
  31.     {
  32.      case 1:
  33.           system("cls");
  34.           //Codigo o funcion que quieras escribir
  35.      break;
  36.      
  37.      case 2:
  38.           system("cls");
  39.           //Codigo o funcion que quieras escribir
  40.      break;
  41.      case 3:
  42.           system("cls");
  43.           //Este solo va con el "cls" para limpiar la pantalla sin funcion o codigo para que vuelva al menu
  44.      break;
  45.      default:
  46.           system("Color 4F");  
  47.           system("cls");
  48.           printf("OPCION INCORRECTA");
  49.           system("pause");
  50.      break;
  51.     }
  52.  }
  53. }
  54.  
  55.