Ayuda con C++, argh!

Bueno, a ver si alguien me explica como hacer esto:

Se trata de que al pedir un numero (que se yo, para sumarlos por ejemplo), que si me introduce por ejemplo "dos" en lugar de "2" no me pete el programa... es que no se como coño hacerlo...

Gracias!
Pues tendrás que capturar el input de teclado como un string, almacenarlo en una variable y compararlo con resultados conocidos.

Por ejemplo (pseudo-código, no te fies):

printf("introduce nº:");
scanf(&numero); // siendo numero un string o char*

// luego comparaciones a saco
if(numero=='1') valor=1; // valor es una 2ª variable con el entero representado por la entrada
...
//del mismo modo...
if(numero=="tres") valor=3;
// tendrás que mapear todos los valores. Si pretendes llegar a cifras elevadas, como centenas, la cosa puede hacerse muy tediosa, aunque no complicada.
//y si no coincide con una entrada conocida
else printf("input erroneo");

Y después ya puedes procesar el input como necesites.
Es un coñazo, pero no es complicado.

Espero que te sirva la explicación, no sé si he sido muy claro :P
Pillo lo que quieres decir creo, pero no es lo que pregunto, me parce que me he explicado mal.

Yo quiero decir, que me pida el numero, y si me pone "fedfgewghwrhgqsrh" no pete el programa (salga una ventana de error o algo)
Te explico un poco a ver, existe algo llamado excepciones, solo tienes que hacer que se lance una excepción si el string no corresponde a un numero, y cuando capturas la excepción, poner hay el mensaje de error.

Por ejemplo:

try
  {
    Codigo a capturar
  }
   catch(Tipo de excepcion)
{
     Mensaje de error
}
   


Espero que te sirva, un saludo
Mmmm, creo que lo pillo, pero me puedes hacer un ejemplo mas gráfico? que es el TRY? XD
Una pregunta no se podria hacer :

int numero;
while(!isdigit(cin>>numero)) //No se si se puede hacer esto

SI no que tal asi:

int numero;
cin >> numero;
while(!isdigit(numero))
cin >> numero;
Escrito originalmente por The Sabbat
Mmmm, creo que lo pillo, pero me puedes hacer un ejemplo mas gráfico? que es el TRY? XD


A ver si me explico mejor ahora

Las excepciones sirven para capturar circusntancias imprevistas a la hora de ejecutar el programa, por ejemplo que pidas un int y te den un char entonces si no tratas eso, el programa peta directamente, para eso estan las excepciones, que se utilizan con el bloque try/catch

dentro del try pones el codigo que puede lanzar la excepcion(Error) entonces si se lanza la excepcion, entra en funcionamiento el bloque catch donde estara definida ese tipo de excepcion, y por lo que el programa no petará por ejemplo

para tu problema

haces un while con una variable boolean que será la llave

Entonces pones dentro del while



while ! llave
{
try
     {
        printf("introduce nº:");
        scanf(&numero);
      }//si se lanza una excepcion pasa al siguiente bleque si no se lo salta

catch(Nombreexcepcion variable que la controla)
{
        llave =false;
        printf("introduce el numero correctamente");
}
}



Mas o menos es esto, es que de la sintaxis no me acuerdo mucho, peor viene a ser esto, si sabes algo de java, en c++ es bastante similar.

Lo de Nombredeexcepcion, tienes que buscar cual es la excepcion de formato nuemrico incorrecto.

Un saludo espero que te sirva
Estáis mezclando C con C++ y con no se que más...

Te recomiendo este libro para empezar:

http://mat21.etsii.upm.es/ayudainf/aprendainf/Cpp/manualcpp.pdf


La entrada y salida estándar en ANSI C++ se realiza a través del namespace std (cin y cout), lo de printf y scanf son restos del C.
Escrito originalmente por Churly
Estáis mezclando C con C++ y con no se que más...

Te recomiendo este libro para empezar:

http://mat21.etsii.upm.es/ayudainf/aprendainf/Cpp/manualcpp.pdf


La entrada y salida estándar en ANSI C++ se realiza a través del namespace std (cin y cout), lo de printf y scanf son restos del C.


llevas razon, yo me fije del post de arriba, ya dije que no estoy muy puesto en c++, bueno mejor dicho casi nada.

Un saludo hasta otra
8 respuestas