Jump to content
RafaelSobral

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

Recommended Posts

RafaelSobral

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

no podes forçar isso ao utilizador.

o que podes fazer é ler o que o utilizador inseriu, validar que é tudo dígitos e responder de acordo com o que foi validado


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
RafaelSobral

thoga31, ainda sou iniciante, não percebi quase nada desse exemplo s:

HappyHippyHippo que comando de interação achas que deva utilizar?

Edited by thoga31
Correcção da formatação

Share this post


Link to post
Share on other sites
thoga31

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!

Share this post


Link to post
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

×
×
  • 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.