porche111 Posted April 24, 2009 at 01:48 PM Report #258823 Posted April 24, 2009 at 01:48 PM boas, precisava de uma ajudinha. Eu tenho que acabar o programa hj para entregar por mail ao stor. o programa é este: #include <iostream.h> #include <iomanip> #include <cctype> #include <cstring> #include <cstdlib> struct data { int dia; int mes; int ano; }; struct data consulta[1]; struct hospital { char nome[40]; char morada [50]; struct data datac; char motivo [100]; }; struct hospital paciente; int ler(); int mostrar(); int sair(); int main () { int opcao=0; while(opcao!=3) { cout<<"******Hospital*******"<<endl; cout<<endl; cout<<" 1 - Ler dados "<<endl; cout<<" 2 - mostrar dados "<<endl; cout<<" 3 - Sair "<<endl; cout<<endl; cout<<"Escolha o numero da sua opcao ->"; cin>>opcao; if(opcao!=3) { switch(opcao) { case 1: ler(); break; case 2 : mostrar(); break; case 3 : sair(); break; } } } return 0; } int ler() { cout<<"***Ler Dados***"<<endl; cout<<endl; cout<<"Digite o nome do paciente ->"; cin.getline(paciente.nome, sizeof(paciente.nome)); cout<<endl; cout<<"Digite a morada do paciente ->"; cin.getline(paciente.morada, sizeof(paciente.morada)); cout<<"Digite a dia da consulta do paciente ->"; cin>>paciente.datac.dia; cout<<"Digite o mes da consulta do paciente ->"; cin>>paciente.datac.mes; cout<<"Digite o ano da consulta do paciente ->"; cin>>paciente.datac.ano; cout<<"Digite o motivo da consulta ->"; cin.getline(paciente.motivo, sizeof(paciente.motivo)); } int mostrar(){ cout<<"****Mostrar Dados****"<<endl; cout<<endl; cout<<"O nome do paciente e' "<<paciente.nome<<endl; cout<<"A morada do paciente e' "<<paciente.morada<<endl; cout<<"A data da consulta e' "<<paciente.datac.dia<<" "<<paciente.datac.mes<<" "<<paciente.datac.ano<<endl; cout<<"O motivo da consulta e' "<<paciente.motivo<<endl; } int sair(){ return 0; } É o seguinte, neste programa esta tudo correcto, ou melhor quase tudo, o que esta mal é um bug que tenho aqui. o bug é na funçao ler() pois ele salta me o primeiro cin.getline a frente, como podem vir a testar. Eu meti um cin.getline em seco antes do cout e funcionou mas o stor nao quer assim. Tambem ja meti antes do cin.getline(); um cin>>ws; e na outra vez um cin.ignore(); e tb funciona mas o stor diz que é o mesmo que meter um cin.getline em falso como eu fazia e nao quer assim. Alguem me pode ajudar? cumps
Metaluim Posted May 1, 2009 at 12:02 AM Report #260431 Posted May 1, 2009 at 12:02 AM isto é mais um exercício de C do que C++ da maneira como está estruturado... O que o teu stôr quer, é que faças flush do stdin (o input geral), portanto adiciona isto antes de cada cin: fflush(stdin); e voilá!
Triton Posted May 1, 2009 at 12:12 AM Report #260434 Posted May 1, 2009 at 12:12 AM isto é mais um exercício de C do que C++ da maneira como está estruturado... O que o teu stôr quer, é que faças flush do stdin (o input geral), portanto adiciona isto antes de cada cin: fflush(stdin); e voilá! Cuidado. Lê este meu post e do pmg para mais explicações: http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=184374 <3 life
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now