Jump to content

[ajuda] urgente exercicio c++


Recommended Posts

Posted

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

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.