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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


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

Desconectado Desconectado

Mensajes: 10


Ver Perfil
AYUDA C++
« en: 24 Abril 2016, 20:35 pm »




Necesito ayuda por favor :(
no se como hacer un menu de ociones para entrar a una opcion y luego a otra y finalmente a otra

Hasta ahora he colocado esto:

Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
int opciones;
cout << "TIPO DE FABRICANTE" << endl;
cout << "================" << endl;
cout << "1. Microsoft \n";
cout << "2. Apple" << endl;
cout << "3. Linux" << endl;
cout << "Ingrese su Opcion: ";
cin >> opciones;

system("cls");




_getch();
return 0;
}


« Última modificación: 25 Abril 2016, 01:29 am por Themegajordan » En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Ayuda con menus de opciones en C/C++
« Respuesta #1 en: 25 Abril 2016, 04:02 am »

Hay un tema con un pin sobre menus, sin embargo te voy a dar una respuesta:

Puedes hacer algo muy simple asi:

Código
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. char op[2];
  8.  
  9. while (op[0]!='0'){
  10. cout << "TIPO DE FABRICANTE" << endl
  11. << "================" << endl
  12. <<  "1. Microsoft"  << endl
  13. <<  "2. Apple" << endl
  14. <<  "3. Linux" << endl << endl
  15. << "Ingrese su Opcion: ";
  16. cin >> op;
  17.  
  18. printf ("\nHas seleccionado %c\n\n",op[0]);
  19. getchar();
  20. }
  21.  
  22. getchar();
  23. return 0;
  24. }
  25.  



« Última modificación: 28 Abril 2016, 02:52 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA C++
« Respuesta #2 en: 26 Abril 2016, 01:03 am »

Lástima que el trabajo sea en C++, porqué sé muy poco de ese lenguaje, pero aquí te enseño un código en C el cuál tienes los datos separados de la lógica, una función menú genérica y un main limpio.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4.  
  5. /* Estas tablas facilitan los posteriores cambios en las opciones */
  6. /* En las opciones de menú poner siempre al final un NULL, ya que
  7.  * es lo que espera la función para trabajar con estos argumentos.
  8.  */
  9. const char *fabricantes[] = {"Microsoft", "Apple", "Linux", NULL};
  10. const char *productos[] = {"Sistema operativo", "Lenguaje de programación", NULL};
  11. const char *dispositivo[] = {"Celulares", "Tablas", "Otros", NULL};
  12.  
  13. const int precios_microsoft[] = {
  14.            /* Sistema operativo */ 1500,
  15.            /* Lenguaje de Programación */
  16.            /*    Celulares */      1800,
  17.            /*    Tablas    */      1200,
  18.            /*    Otros     */       900};
  19.  
  20. const int precios_apple[] = {
  21.            /* Sistema operativo */ 2500,
  22.            /* Lenguaje de Programación */
  23.            /*    Celulares */      1900,
  24.            /*    Tablas    */      1800,
  25.            /*    Otros     */      1600};
  26.  
  27. const int precios_linux[] = {
  28.            /* Sistema operativo */ 1000,
  29.            /* Lenguaje de Programación */
  30.            /*    Celulares */       100,
  31.            /*    Tablas    */       150,
  32.            /*    Otros     */        50};
  33.  
  34. int menu(const char *titulo, const char *empresa, const char **opciones) {
  35.    int i = 0;
  36.    int respuesta;
  37.  
  38.    do {
  39.        /* Imprimiendo el título del menú */
  40.        printf("%s ", titulo);
  41.        if(empresa)
  42.            printf("%s", empresa);
  43.        printf(":\n\n");
  44.        /* Imprimiendo opciones del menú */
  45.        while(opciones[i] != NULL) {
  46.            printf("    %2i. %s\n", i + 1, opciones[i]);
  47.            ++i;
  48.        }
  49.        --i;
  50.        /* Adquiriendo la opción deseada */
  51.        printf("\n    Opcion >> ");
  52.        respuesta = getchar();
  53.        /* Control de errores de la entrada por teclado */
  54.        while(getchar() != '\n');
  55.        if(isdigit(respuesta))
  56.            respuesta -= '0' + 1;
  57.        else
  58.            respuesta = -1;
  59.        if(respuesta > i)
  60.            respuesta = -1;
  61.        if(respuesta == -1) {
  62.            i = 0;
  63.            printf("*** OPCION INCORRECTA ***\n");
  64.            while(getchar() != '\n');
  65.        }
  66.    } while(respuesta == -1);
  67.  
  68.    /* Un poco bonito, que también puede formar parte del menú... */
  69.    putchar('\n');
  70.  
  71.    /* Devuelvo la opción elegida */
  72.    return respuesta;
  73. }
  74.  
  75. int main() {
  76.    int respuesta;
  77.    const char *fabricante;
  78.    const int *lista_de_precios;
  79.  
  80.    respuesta = menu("Elija fabricante", NULL, fabricantes);
  81.    fabricante = fabricantes[respuesta];
  82.    switch(respuesta) {
  83.        case 0:
  84.            lista_de_precios = precios_microsoft;
  85.            break;
  86.        case 1:
  87.            lista_de_precios = precios_apple;
  88.            break;
  89.        case 2:
  90.            lista_de_precios = precios_linux;
  91.            break;
  92.    }
  93.  
  94.    respuesta = menu("Elija el producto de", fabricante, productos);
  95.  
  96.    if(respuesta == 1)
  97.        respuesta = menu("Elija el dispositivo de", fabricante, dispositivo) + 1;
  98.  
  99.    printf("El precio del producto es: %i", lista_de_precios[respuesta]);
  100.  
  101.    return 0;
  102. }
« Última modificación: 26 Abril 2016, 09:48 am por MAFUS » En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: AYUDA C++
« Respuesta #3 en: 26 Abril 2016, 01:27 am »

Código
  1.  
  2. respuesta = menu("Elija fabricante", NULL, fabricantes);
  3. fabricante = fabricantes[respuesta];
  4.  

El problema de esa implementacion @MAFUS es que no tienes una forma de salir de esos bucles, por lo demas muy bien.
« Última modificación: 26 Abril 2016, 01:30 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA C++
« Respuesta #4 en: 26 Abril 2016, 01:35 am »

No entiendo esa afirmación :-(
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: AYUDA C++
« Respuesta #5 en: 26 Abril 2016, 01:42 am »

Como sale tu programa (de un bucle infinito de opciones) de un menu o un submenu ?

No hay una opcion 'salir' que serviria para salir de un sub-menu o salir del programa segun donde te encuentres. Tu programa solo puede ir en una dirección y asi no funciona ningun sistema.

Pero no lo tomes a mal, es solo un detalle que puedes arreglar en 1 o 2 linea seguro.
« Última modificación: 26 Abril 2016, 16:40 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA C++
« Respuesta #6 en: 26 Abril 2016, 01:45 am »

No es infinito. Pruébalo :)
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: AYUDA C++
« Respuesta #7 en: 26 Abril 2016, 01:57 am »

Creo que no me entiendes @MAFUS  :huh:

Citar
C:\C>menu_mafus

Elija fabricante :

     1. Microsoft
     2. Apple
     3. Linux

    Opcion >> 0
*** OPCION INCORRECTA ***

Elija fabricante :


    Opcion >>

*** OPCION INCORRECTA ***

Elija fabricante :


    Opcion >>

*** OPCION INCORRECTA ***

Cual se supone es la forma de salir de ahi ? y si sales .... entonces que asignas cuando haces....

Código
  1. fabricante = fabricantes[respuesta];  
  2.  

Basura ? accedes con cualquier banana a un array fabricantes ?  :silbar:
(en caso de que puedas salir, claro)


Como te decia.... es facil cambiar eso: tienes que tener una opcion que sea de salida y ademas tienes que acceder a un array primero habiendo chequeado el indice es valido
« Última modificación: 26 Abril 2016, 02:04 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA C++
« Respuesta #8 en: 26 Abril 2016, 02:04 am »

Podría poner una opción para salir si no se quisiera marcar un fabricante o uno de los productos en posterioridad. Pero ya es muy tarde, las 2 de la mañana  :laugh:.
Eso sí, el programa te dejará seguir si eliges una opción correcta.
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: AYUDA C++
« Respuesta #9 en: 26 Abril 2016, 16:43 pm »

Con objetos todo es más fácil.... el código queda muy simple .. solo mirar el main()  ;)

Si queremos crear el menu de empresas tecnologicas:

Código
  1. Menu m = Menu("OS");
  2. m.set_option("Windows");
  3. m.set_option("Mac OS");
  4. m.set_option("Linux");
  5.  

O..

Código
  1.  
  2. Menu m;
  3. m.set_title("OS");
  4. m.set_option("Windows");
  5. m.set_option("Mac OS");
  6. m.set_option("Linux");
  7.  

Por supuesto el titulo es opcional, pero especificar las teclas asignadas a cada opcion a veces no es opcional:


Código
  1. Menu m = Menu("Frutas");
  2. m.set_option("Mango");
  3. m.set_option("Mandarina",'N');
  4. m.set_option("Manzana",'A');
  5. m.set_option("Peras");
  6.  

y nada quita que uses numeros como letras:

Código
  1. Menu m = Menu("Frutas");
  2. m.set_option("Mango",'1');
  3. m.set_option("Mandarina",'2');
  4. m.set_option("Manzana",'3');
  5. m.set_option("Peras",'4');
  6.  

He habilitado 3 modos distintos de "enumeracion" a saber : NUMERICO, ALFABETICO y AUTO; se eligen en el constructor

Dejo el codigo completo aqui
« Última modificación: 28 Abril 2016, 03:00 am por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines