Ir para conteúdo
Fórum Script Brasil
  • 0

Assistência Técnica - Fila de Atendimento de Pedidos


Eduardo_UniFieo

Pergunta

Estou fazendo este programa em C, mais não consigo finaliza-lo.

será qiue alguém pode me ajudar.

Tenho que fazer esse programa urgente, estou desesperado.

Assistência Técnica - Fila de Atendimento de Pedidos

Codificar um programa que utilize o conceito de fila encadeada simples para criar em memória uma fila de atendimento de pedidos a serem atendidos por uma assistência técnica. Essa fila deve ser implementada pela seguinte estrutura e variáveis globais, a seguir:

struct filaPedidos
       { char nomeCliente [20];
     char descServico [20];
         char endereco [20];
char bairro [15];    
         struct fila *próximo;
        }*inicio, *fim;

A chamada para o atendimento será feita ao pedido primeiro da fila para um dos técnicos que estiver liberado (não em atendimento).

Na Assistência Técnica existem 5 técnicos disponíveis que deverão ser considerados na implementação do vetor de estruturas global a seguir:

struct tecnico

{ char nomeTecnico[20]; //nome do médico

bool liberado; // true: liberado, false: em atendimento

int qtdeAtendimentos; //quantidade de atendimentos já realizados

} tecnicos [5]; //vetor do tipo struct tecnico

Este vetor deverá ser inicializado no começo do programa com dados de cada técnico:

• nomeTecnico : nome do tecnico, recebido por digitação

• liberado : true (tecnico liberado para atendimento)

• qtdeAtendimentos : 0 (nenhum atendimento realizado)

O controle do programa será feito por meio de opções exibidas num menu, como se segue:

Inserir um pedido na fila

Solicitar por digitação o nome do cliente, a descrição do serviço a ser feito, o endereço e o bairro do local do serviço

Inserir o pedido na fila

Atender um pedido

Verificar se existe pedido na fila

Solicitar o nome do técnico. Verificar se o mesmo está liberado para atendimento (liberado = true). Caso contrário, emitir mensagem de erro.

Visualizar os dados do pedido e o nome do técnico que o atenderá.

Remover o pedido da fila

Marcar o técnico como ocupado

Adicionar 1 ao numero de atendimentos desse técnico

Liberar um técnico para novo atendimento

Solicitar o nome do técnico. Verificar se está mesmo ocupado

Marcar o técnico como liberado

Visualizar mensagem referente a liberação

Relacionar nomes dos técnicos liberados

Visualizar os nomes dos técnicos liberados

Pesquisas

Visualizar um sub-menu com as seguintes opções a escolher:

Quantidade de pedidos que ainda estão na fila sem atendimento

Quantidade de pedidos atendidos por cada técnico

Relação dos pedidos para um determinado bairro solicitado

Listar dados sobre os pedidos contidos na fila

Sair do programa

Obs: na variável liberado será utilizado o tipo bool, que significa um valor booleano, ou seja, esta variável só pode conter os valores true ou false. Este tipo existe na linguagem C++.

Uma comparação com essa variável poderia ser:

if (liberado) ou, if (liberado == true)

if (!liberado) ou, if (liberado == false)

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Só cpnsigo fazer o código até aqui

#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));

novo->proximo = NULL;

printf ("\nDigite o nome do paciente: ");

fflush(stdin);

gets (novo->nomePaciente);

printf ("Digite a idade do paciente: ");

scanf ("%d", &novo->idade);

printf ("Digite a temperatura do paciente: ");

scanf ("%f", &novo->temperatura);

if (fim == NULL)

{inicio = novo;}

else

{fim->proximo = novo;}

fim = novo;

}

int atender ()

{

int atendimentos, i=0, val;

struct fila *aux;

char desejado[20];

if (inicio == NULL)

{

printf ("\n Fila vazia\n\n");

return 0 ;

}

aux = inicio;

printf ("\nDigite o nome do medico desejado: ");

fflush(stdin);

gets (desejado);

do

{

if (strcmp(desejado, medicos.nome ) == true)

{

if (medicos.liberado==true)

{

medicos.liberado=false;

medicos.qtdeAtendimentos = medicos.qtdeAtendimentos + 1;

}

}

i++;

}

while (i<5);

/*for (i=0;i<5;i++)

{

if (strcmp(desejado, medicos.nome ) == true)

{

if (medicos.liberado==true)

{

medicos.liberado=false;

medicos.qtdeAtendimentos = medicos.qtdeAtendimentos + 1;

}

}

}

*/

val = inicio->idade;

aux = inicio;

inicio = inicio->proximo;

if (inicio == NULL)

{

fim = NULL;

}

free(aux);

return val;

}

Editado por Eduardo_UniFieo
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...