Ir para o conteúdo
RafaelSobral

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

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RafaelSobral

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

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

Editado por thoga31
Correcção da formatação

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.