Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ankora45 en 2 Octubre 2012, 11:58 am



Título: duda c++
Publicado por: ankora45 en 2 Octubre 2012, 11:58 am
Hola veran me gustaria saber como hacer que cuando se le pida un numero al usuario para acceder a un menu no tenga que escribirlo, si no solo pulsarlo ej:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int num;
  8.    cout<<"pulse 1 para acceder a menu1"<<endl;
  9.    cout<<"pulse 2 para acceder a menu2"<<endl;
  10.    cin>>num; /* aqui lee la variable pero tienes que escribirla y pulsar intro
  11.                  y yo quiero que lo coja directamente al pulsar el numero en el
  12.                  teclado */
  13.    switch(num)
  14.    {
  15.        case '1': cout<<"ha accedido al menu 1"<<endl;
  16.        break;
  17.        case '2': cout<<"ha accedido al menu 2"<<endl;
  18.        break;
  19.    }
  20.    return 0;
  21. }

no se si sera con (stdin) y la biblioteca cstdio espero respuesta :D


Título: Re: duda c++
Publicado por: leosansan en 2 Octubre 2012, 13:47 pm
hacer que cuando se le pida un numero al usuario para acceder a un menu no tenga que escribirlo, si no solo pulsarlo
Una forma es mediante el uso de la función getch de la librería coni.h, incluida ya en Cod::Blocks o Dev.C++ -no hablo de la de borland-. NO es la mejor o más portable para otros compiladores, pero hace lo que quieres
Código
  1. #include <iostream>
  2. #include<conio.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    cout<<"pulse 1 para acceder a menu1"<<endl;
  8.    cout<<"pulse 2 para acceder a menu2"<<endl;
  9.    switch(getch ())
  10.        {
  11.            case '1': cout<<"ha accedido al menu 1"<<endl;
  12.            break;
  13.            case '2': cout<<"ha accedido al menu 2"<<endl;
  14.            break;
  15.        }
  16.    return 0;
  17. }
  18.  
Yo también quedo a la espera de otras soluciones sin getch.
Saludos!


Título: Re: duda c++
Publicado por: rir3760 en 2 Octubre 2012, 15:33 pm
Utilizando solo C o C++ no es posible. La única solución es utilizar una biblioteca de terceros (como en tu ejemplo) o bien el API del sistema operativo (Mas información en MSDN: Consoles (http://msdn.microsoft.com/en-us/library/ms682010.aspx)).

Un saludo


Título: Re: duda c++
Publicado por: 0xDani en 2 Octubre 2012, 15:53 pm
Utilizando solo C o C++ no es posible. La única solución es utilizar una biblioteca de terceros (como en tu ejemplo) o bien el API del sistema operativo (Mas información en MSDN: Consoles (http://msdn.microsoft.com/en-us/library/ms682010.aspx)).

Un saludo

Para Linux/Unix: tengo entendido que es termios.h.

Saludos.