Jump to content

Limitar introdução números a uma variável


RafaelSobral
 Share

Recommended Posts

Boa tarde, estou com uma dúvida que é a seguinte : Preciso de limitar o valores que o utilizador vai introduzir no programa a números e não a caracteres , como por exemplo , eu peço para o utilizador introduzir um valor (por exemplo 40, 60, 600, etc) e o utilizador só pode introduzir números , e não caracteres, pois no meu programa se eu colocar por exemplo "gdssfssar" ele continua, e o que é pretendido é que ele coloque apenas números . Se alguém me puder ajudar 🙂

Link to comment
Share on other sites

Não há nenhum comando de interacção específico para o que precisas. Tens é de construir toda uma estrutura que valide o input do utilizador, como aquele que te apresentei.

O facto de perceberes pouco do exemplo não é motivo per se para o ignorar, é desta forma que se aprende. 😉

Vamos lá analisar o código (vou simplificá-lo):

#include <iostream>
#include <limits>   // biblioteca necessária para auxiliar na limpeza do buffer
using namespace std;

int main() {
   int i = 10;     // valor inicial para testar

   while (!(cin >> i)) {          // enquanto o input não for válido...
       cout << "NaN<int>" << endl;  // informar que não é um número inteiro
       cin.clear();                 // limpar as falgs de erro da stream (houve um erro, ele foi assinalado numa flag, agora vamos reiniciar as flags
       cin.ignore(numeric_limits<streamsize>::max(), '\n');
           // Ignorar todos os caracteres até "\n" (limpeza do buffer).
           // O primeiro argumento é uma forma de dizer ao ignore para limpar tudo até ao caracter indicado no 2º argumento e não apenas os primeiro N caracteres.
   }

   cout << "Number: " << i;
   return 0;
}

(http://ideone.com/me97u8)

Diz se não percebeste qualquer coisa 😉

Knowledge is free!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.