Ir ao conteúdo

Problemas Em C++


GuilhermeLima

Posts recomendados

Postado

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

Postado

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

  • 2 semanas depois...
Postado

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;
}

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!