Fala galera, to fazendo um programa aki relacionado a posto de saúde.
Codificar um programa que utilize o conceito de fila encadeada simples para criar em memória uma fila de atendimento de pacientes a serem atendidos por médicos em um posto de saúde. Essa fila deve ser implementada pela seguinte estrutura e variáveis globais, a seguir:
struct fila
{char nomePaciente [20];
int idade;
float temperatura;
struct fila próximo;
}*inicio, *fim;
A chamada para o atendimento de consulta será feita ao paciente primeiro da fila para um dos médicos que estiver liberado (não em atendimento).
No posto de saúde existem 5 médicos disponíveis, que deverão ser considerados na implementação do vetor de estruturas global a seguir:
struct medico
{ char nome[20]; //nome do médico
bool liberado; // true: liberado, false: em atendimento
int qtdeAtendimentos; //quantidade de atendimentos já realizados
} medicos [5]; //vetor do tipo struct medico
Este vetor deverá ser inicializado no começo do programa com dados de cada médico:
nome : nome do médico, recebido por digitação
liberado : true (médico liberado para atendimento)
O controle do programa será feito por meio de opções exibidas num menu com as opções descritas a seguir, as quais deverão chamar uma função correspondente, como se segue:
(Fiz todos os menus já, so ta faltando uma parte desse):
Verificar se existe paciente na fila
● Solicitar o nome do médico. Verificar se o mesmo está liberado para atendimento (liberado = true). Caso contrário, emitir mensagem de erro
● Visualizar o nome do paciente e o do médico que o atenderá na consulta.
● Remover o paciente da fila
● Marcar o médico como não liberado (liberado = false)
● Adicionar 1 ao número a qtde de atendimentos feitos por esse médico
A remoção e outros itens eu já fiz, só q, na hora de comparar o nome do médico q o cara pediu com um já existente, acontece coisa louca, como por exemplo, o medico q eu pedi, fica como liberado = true, e todos os outros viram liberado = false... Não to conseguindo arrumar esse detalhe... buga direito.
quando eu tentei apenas com if, if (desejado == medicos.nome). Ele num fazia nada, então tentei o strcmp, so q ai acontece akilo q eu disse.
vo postar aki essa parte do programa, pra você entenderem q eu fiz.
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <cstdlib>
#include <string.h>
typedef char string[20];
struct fila
{char nomePaciente [20];
int idade;
float temperatura;
struct fila *proximo;
}*inicio, *fim;
struct medicos
{char nome[20];
bool liberado;
int qtdeAtendimentos;
} medicos [5];
void inserir ();
int atender ();
void liberar_medico ();
void relacionar_medicos ();
void pesquisar ();
int main ()
{
int opcao,i;
inicio = NULL;
fim = NULL;
for (i=0;i<5;i++)
{
printf ("Digite o nome do medico %d: ", i+1);
gets (medicos.nome);
medicos.liberado=true;
medicos.qtdeAtendimentos = 0;
}
while (opcao != 6)
{
printf ("\n -=-= [MENU - POSTO DE SAUDE] =-=-");
printf ("\n\n 1 - Inserir um paciente na fila");
printf ("\n 2 - Atender um paciente");
printf ("\n 3 - Liberar um medico");
printf ("\n 4 - Relacionar medicos liberados");
printf ("\n 5 - Pesquisar");
printf ("\n 6 - Sair do programa\n\n");
scanf ("%d", &opcao);
switch (opcao)
{
case 1:
inserir();
break;
case 2:
atender();
break;
case 3:
liberar_medico ();
break;
case 4:
relacionar_medicos ();
break;
case 5:
pesquisar ();
break;
case 6:
break;
default: printf ("\n Opcao invalida ");
}
}
}
void inserir ()
{
int aux;
struct fila *novo;
novo = (struct fila *) malloc (sizeof (struct fila));
Pergunta
Zualdo
Fala galera, to fazendo um programa aki relacionado a posto de saúde.
Codificar um programa que utilize o conceito de fila encadeada simples para criar em memória uma fila de atendimento de pacientes a serem atendidos por médicos em um posto de saúde. Essa fila deve ser implementada pela seguinte estrutura e variáveis globais, a seguir:
struct fila
{char nomePaciente [20];
int idade;
float temperatura;
struct fila próximo;
}*inicio, *fim;
A chamada para o atendimento de consulta será feita ao paciente primeiro da fila para um dos médicos que estiver liberado (não em atendimento).
No posto de saúde existem 5 médicos disponíveis, que deverão ser considerados na implementação do vetor de estruturas global a seguir:
struct medico
{ char nome[20]; //nome do médico
bool liberado; // true: liberado, false: em atendimento
int qtdeAtendimentos; //quantidade de atendimentos já realizados
} medicos [5]; //vetor do tipo struct medico
Este vetor deverá ser inicializado no começo do programa com dados de cada médico:
nome : nome do médico, recebido por digitação
liberado : true (médico liberado para atendimento)
qtdeAtendimentos : 0 (nenhum atendimento realizado)
O controle do programa será feito por meio de opções exibidas num menu com as opções descritas a seguir, as quais deverão chamar uma função correspondente, como se segue:
(Fiz todos os menus já, so ta faltando uma parte desse):
Verificar se existe paciente na fila
● Solicitar o nome do médico. Verificar se o mesmo está liberado para atendimento (liberado = true). Caso contrário, emitir mensagem de erro
● Visualizar o nome do paciente e o do médico que o atenderá na consulta.
● Remover o paciente da fila
● Marcar o médico como não liberado (liberado = false)
● Adicionar 1 ao número a qtde de atendimentos feitos por esse médico
A remoção e outros itens eu já fiz, só q, na hora de comparar o nome do médico q o cara pediu com um já existente, acontece coisa louca, como por exemplo, o medico q eu pedi, fica como liberado = true, e todos os outros viram liberado = false... Não to conseguindo arrumar esse detalhe... buga direito.
quando eu tentei apenas com if, if (desejado == medicos.nome). Ele num fazia nada, então tentei o strcmp, so q ai acontece akilo q eu disse.
vo postar aki essa parte do programa, pra você entenderem q eu fiz.
OBS: Essa parte é a funcao ATENDER
q eu to enroscado.
arrumarando esse detalhe, já finalizo o programa, vlw ae qm puder ajudar!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.