Bem o problema que o prosaQue teve é devido ao facto do buffer estar já preenchido com uma certa quantidade de caracteres que inviabiliza a escrita ou leitura. É como se o buffer estivesse demasiado "empanturrado", e já não coubesse lá mais nada.
Das soluções apresentadas aquela que eu uso é do ciclo while, que vai recolhendo os caracteres do buffer até chegar ao caracter '\n', ficando assim o buffer vazio.
Dois getchar()? Primeiro, e apesar de não ser um grande reparo, a versão, por assim dizer, do getchar() em C++ é cin.get(). Segundo, dessa maneira ainda estariamos a empanturrar mais o buffer (com os computadores de hoje em dia, não era por isto que a RAM se esgotaria, mas um bom programador presa-se sempre por poupar ao máximo a sua máquina ...).
system("pause")? Este então é que nem pensar. Este método está estremamente dependente da plataforma em que está a ser execuado.
Só mais uma coisa. Baderous, tu implimentas-te a tua função limpa_buffer antes dos outputs que indicam qual é o número maior:
Código:
void limpa_buffer()
{
char c;
do
{
c=getchar();
} while(c!='\n');
}
...
limpa_buffer();
cout << " O maior numero e: ";
cout << maior;
getchar();
return 0;
}
Se a implimentasses só antes do getchar(), haveria algum problema?
Código:
void limpa_buffer()
{
char c;
do
{
c=getchar();
} while(c!='\n');
}
...
cout << " O maior numero e: ";
cout << maior;
[COLOR=red]limpa_buffer();[/COLOR]
getchar();
return 0;
}
É só mesmo por uma questão de esclarecimento.
Vá, cumps