Ir ao conteúdo
  • Cadastre-se

Bloquear Caracteres especiais e Letras do alfabeto no programa[C++]


HiperWars

Posts recomendados

Galera do CH... Me da um help aqui.

 

Comecei a programar em C++ a pouco tempo, e tem algo que não to conseguindo achar em lugar nenhum para implementar nos meus programas... Podem me ajudar?

 

Quero bloquear a entrada de caracteres especiais e letras do alfabeto onde só devem entrar números...

 

O programa se trata de uma micro calculadora de aproveitamento.

Segue o código:

#include<iostream>#include<istream>using namespace std;int main(){	int i;	float soma = 0.0, nota [i], media;	char dsp [50];	setlocale(LC_ALL,"Portuguese");	cout<<"|||||||| Calculadora de Porcentagem ||||||||\n";	cout<<"********************************************\n";	cout<<"Disciplina: ";cin.get(dsp,50);	cout<<"\nDigite a porcentagem em Decimal das aulas 1-10 da sua disciplina.\n";	for(i= 0;i< 10; i++)	{		cout<<"Aula "<<i+1<<": ";cin>>nota[i];		soma = soma + nota[i]; 		}	media = soma/10;		cout<<"A soma total foi de "<<soma<<" pontos."<<endl;		cout<<"A média de aproveitamento foi de "<<media<<"%"<<endl<<endl;	system("pause");return 0;	}

Gostaria que o bloqueio surgi-se aqui ↓ para acontecer o seguinte por exemplo: ( If (alguma letra ou caractere especial) { cout<<"Opção Invalida! Digite apenas números!"<<endl;}

else { ... }

for(i= 0;i< 10; i++)	{		cout<<"Aula "<<i+1<<": ";cin>>nota[i];		soma = soma + nota[i]; 		}

Compreenderam?

Alguma dica ou orientação... Como devo proceder nessas situações? 

Link para o comentário
Compartilhar em outros sites

Já que você não tem certeza do que o usuário irá digitar, a meu ver a solução seria você usar uma string para armazenar o valor recebido , pois se usar um float e o usuário não digitar números, o programa poderá travar.

Veja se isso é o que você procura:

 

#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int main() {  string s;  int i;  bool ok = true;  do {    cout << endl << "Digite o numero: ";    cin >> s;    ok = true;    for (i = 0; i < s.size(); i++) {      cout << s[i];      if (s[i] < '0' || s[i] > '9') {        ok = false;        break;      }    }  } while (ok == false);  system("pause");  return 0;}
Link para o comentário
Compartilhar em outros sites

Peço desculpas pela demora de responder... Estava em semana de prova aqui na faculdade... 

 

 

Eu tentei usar a base do seu codigo, porém estou tendo um retorno de um erro e não to conseguindo identificar, pois também sou novo na linguagem... Pode me auxiliar nesse sentido?

 

Acontecem 2 problemas expressos... Primeiro quando digita por exemplo 100, ele lê a variavel na posição 0, 1, 2 ao mesmo tempo... e entra num loop bem esquisito.

Segundo... To tendo retorno de um erro no copilador: [Warning] multi-character character constant [-Wmultichar]

 

Pode me informar no que estou errando aqui? ... Creio que seja na forma que estou colocando o do ... while com o for... Como resolver?

#include<iostream>#include<istream>#include<cstdio>#include<cstdlib>using namespace std;int main(){	int i;	float soma = 0.0,media;	char dsp [50];	string s;	bool ok;	setlocale(LC_ALL,"Portuguese");	cout<<"|||||||| Calculadora de Porcentagem ||||||||\n";	cout<<"********************************************\n";	cout<<"Disciplina: ";cin.get(dsp,50);	cout<<"\nDigite a porcentagem em Decimal das aulas 1-10 da sua disciplina.\n";	do {   	for(i= 0;i< 10; i++){	      		cout<<"Aula "<<i+1<<": ";cin>>s[i];   		 ok = true;    for (i = 0; i < s.size(); i++) {      if (s[i] < '0' || s[i] > '100') {        ok = false;        break;      }	else {		soma = soma + s[i];	}    }  }  } while (ok == false);		media = soma/10;		cout<<"A soma total foi de "<<soma<<" pontos."<<endl;		cout<<"A média de aproveitamento foi de "<<media<<"%"<<endl<<endl;	system("pause");return 0;	}

Ah e só outra coisa... Por que eu tenho retorno de números quando tento digitar letras?, e números fora do padrão... como por exemplo... Digitar "a"

depois digitar outro numero qualquer... e o programa dizer que a soma é 500?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!