Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
GuilhermeLima

Problemas Em C++

Recommended Posts

Fala moçada...

To fazendo um trabalho da faculdade e queria tirar uma Dúvida...

To fazendo no Dev-C++... uma coisa boba...

Criei uma váriavel inteira.... aí eu mando lê a váriavel...

Mas, se digitar a letra A por exemplo, dá um erro muito louco...

saca só...

#include <iostream>

using namespace std;

int main ()

{

struct conceito {

int nota1;

};

conceito notas;

cout<<"Insira a Primeira Nota: ";

cin>>notas.nota1;

while (notas.nota1 > 25 || notas.nota1 < 0 ) {

cout<<"Nota Invalida!"<<endl;

cout<<"Insira Novamente a Primeira Nota."<<endl;

cin>>notas.nota1;

}

é isso aí....

aí quando digita uma letra,por exemplo, escreve na tela:

Nota Invalida!

Insira Novamente a Primeira Nota.

Nota Invalida!

Insira Novamente a Primeira Nota.

Nota Invalida!

Insira Novamente a Primeira Nota.

Nota Invalida!

Insira Novamente a Primeira Nota.

Nota Invalida!

Insira Novamente a Primeira Nota.

(e fica repetindo sem parar... até fechar o programa na marra! hehehe)

Alguem sabe porque q dá isso??

se tem alguma maneira de fazer uma condição do tipo

if (variavel != int)

ou algo do tipo

sei lá!

dá uma ideia aí!

ValeuuuU!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque o IOSTREAM (isto é, o cout e o cin) não verificam o tipo.

Então, quando você tenta jogar um texto prum int ele dá uns erros malucos mesmo... Daí tem que verificar e tentar corrigir

Tente assim:


cin >> x;   // cin is also an ios object

   if (!cin)
       cout << "Extraction of `x' failed\n";

Tirado de C++ Annotations

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cin esperava um int, e não um char... mas como o cin percebeu isso, o caractere na entrada não é perdido... e então, fail informa que a operação de stream falhou...

Saka só:


struct conceito {
 int nota1;
};

conceito notas;

cout<<"antes: "<<cin.fail()<<endl;
cout<<"antes: "<<cin.rdstate()<<endl;

cout<<"Insira a Primeira Nota: ";
cin>>notas.nota1;

cout<<cin.rdstate()<<endl;
cout<<cin.eof()<<endl;
cout<<cin.fail()<<endl;
cout<<cin.bad()<<endl;
cout<<cin.good()<<endl;

while (notas.nota1 > 25 || notas.nota1 < 0 ) {
 cin.clear();
 cin.ignore();
 cout<<"Nota Invalida!"<<endl;
 cout<<"Insira Novamente a Primeira Nota."<<endl;
 cin>>notas.nota1;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×