Ir ao conteúdo
  • Cadastre-se

C++ Como fazer uma mensagem de erro caso isso aconteça?


Posts recomendados

Ola, queria saber como faço uma mesagem de erro, bem quando voce cria uma variavel "int" e usa um "cin" para ler, sem querer o usuario  tecla uma letra , e depois do enter o programa trava, queria saber como faço uma mesagem de erro caso isso aconteça?

 

Agradeço muito mesmo a resposta.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Não manjo quase nada de C ou C++, mas até eu tô precisando programar nessa bagaça agora e até tenho uma dúvida besta a ser resolvida, mas vamos lá ao seu problema

 

Você precisa testar sua entrada de dados, para isso você tem o isDigit do C++, o código abaixo faz isso, só que eu coloquei em uma função, pois pode ser chamado toda vez que precisar tratar a entrada de dados.

 

Não tem mensagem de erro, você pode implementar ela na função, mas ela repete sempre a mesma mensagem "Digite um número:", até que seja atendido o pedido, que é quando sai da função e vai para o retorno.

#include<iostream>
#include<cctype>
using namespace std;

//Função sendo prototipada
int numerico(char);

int main(){
	setlocale(LC_ALL,"");

	char entrada; // Sua entrada de dados
	int retorno; // Pega o return da função com o inteiro digitado
	
	//Primeira tela feita antes de chamar a função para ler o dado
	cout << "\nDigite um número: ";
	cin >> entrada;
	
	//Retorno só vai receber se da função sair um número entre 0 e 9
	retorno = numerico(entrada);
	cout << char(retorno);
			
	return 0;
}

//Função
int numerico(char valor){
	
	while(!isdigit(valor)){
		system("cls");
		cout << "\nDigite um número: ";
		cin >> valor;
	}
	return valor;
}

Nada impede de voce criar um arquivo externo e guardar essa função dentro dele e depois fazer um include, bastando chamar a função.

Na tela ao compilar você tem isso de retorno:

image.png.0b8bb6a724a82bb62fcb005477bb9c39.png

Quando atendida a condição, você tem o resultado abaixo:

image.png.6ba699375e04c6ea66c321a091162de3.png

Teste esse código e veja se te atende.

 

image.png

Link para o comentário
Compartilhar em outros sites

Use cin.fail()/ clear() / ignore():

#include <iostream>

using namespace std;

int main()
{
    int x;
    cout<<"Entre um número:\n" ;
    cin >> x;
    if (cin.fail()) 
    {
        cin.clear();
        cin.ignore();
        cout << "Isto nao eh um numero, estupido"; 
        
    }
}

Obs: se o primeiro número for um numeral, o cin vai conseguir validar.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

24 minutos atrás, Flávio Pedroza disse:

Use cin.fail()/ clear() / ignore():


#include <iostream>

using namespace std;

int main()
{
    int x;
    cout<<"Entre um número:\n" ;
    cin >> x;
    if (cin.fail()) 
    {
        cin.clear();
        cin.ignore();
        cout << "Isto nao eh um numero, estupido"; 
        
    }
}

Obs: se o primeiro número for um numeral, o cin vai conseguir validar.

 

 

Muito bom, simples de aplicar e pegar o valor exigido, parabéns!!!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...