duda c++

Iniciado por ankora45, 2 Octubre 2012, 11:58 AM

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

ankora45

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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
    int num;
    cout<<"pulse 1 para acceder a menu1"<<endl;
    cout<<"pulse 2 para acceder a menu2"<<endl;
    cin>>num; /* aqui lee la variable pero tienes que escribirla y pulsar intro
                 y yo quiero que lo coja directamente al pulsar el numero en el
                 teclado */
    switch(num)
    {
        case '1': cout<<"ha accedido al menu 1"<<endl;
        break;
        case '2': cout<<"ha accedido al menu 2"<<endl;
        break;
    }
    return 0;
}


no se si sera con (stdin) y la biblioteca cstdio espero respuesta :D
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro

leosansan

Cita de: ankora45 en  2 Octubre 2012, 11:58 AM
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 (cpp) [Seleccionar]
#include <iostream>
#include<conio.h>
using namespace std;

int main()
{
    cout<<"pulse 1 para acceder a menu1"<<endl;
    cout<<"pulse 2 para acceder a menu2"<<endl;
    switch(getch ())
        {
            case '1': cout<<"ha accedido al menu 1"<<endl;
            break;
            case '2': cout<<"ha accedido al menu 2"<<endl;
            break;
        }
    return 0;
}

Yo también quedo a la espera de otras soluciones sin getch.
Saludos!

rir3760

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

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

0xDani

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

Un saludo

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

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM