using System.Collections.Generic;
static Queue<string> geral = new Queue<string>();
static Queue<string> pediatria = new Queue<string>();
static Queue<string> especialidades = new Queue<string>();
static List<string> pacientesAtendidos = new List<string>();
static TimeSpan tempoAtendimento = TimeSpan.FromMinutes(10);
public static void Main(string[] args)
Console.WriteLine("Menu");
Console.WriteLine("1. Adicionar paciente à fila de um médico");
Console.WriteLine("2. Atender próximo paciente por fila");
Console.WriteLine("3. Exibir a fila de espera para cada especialidade");
Console.WriteLine("4. Exibir resumo estatístico");
Console.WriteLine("5. Sair");
string opcao = Console.ReadLine();
AtenderProximoPaciente();
ExibirResumoEstatistico();
Console.WriteLine("Saindo...");
Console.WriteLine("Opção inválida!");
static void AdicionarPaciente()
Console.WriteLine("Digite o código para o paciente: ");
codigo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Digite o nome do paciente: ");
nome = Console.ReadLine();
Console.WriteLine("Escolha a Especialidade: ");
Console.WriteLine("1. Médico Geral");
Console.WriteLine("2. Pediatria");
Console.WriteLine("3. Especialidade");
int especialidade = int.Parse(Console.ReadLine());
Console.WriteLine("Consulta para médico geral adicionada com sucesso!");
geral.Enqueue(nome + " (Código: " + codigo + ")");
Console.WriteLine("Consulta de pediatria adicionada com sucesso!");
pediatria.Enqueue(nome + " (Código: " + codigo + ")");
Console.WriteLine("Consulta de Especialidade adicionada com sucesso!");
especialidades.Enqueue(nome + " (Código: " + codigo + ")");
Console.WriteLine("Opção inválida!");
static void AtenderProximoPaciente()
Console.WriteLine("Escolha a Especialidade para atender:");
Console.WriteLine("1. Médico Geral");
Console.WriteLine("2. Pediatria");
Console.WriteLine("3. Especialidade");
string escolha = Console.ReadLine();
paciente = geral.Dequeue();
Console.WriteLine("Atendendo próximo paciente de Médico Geral: " + paciente);
Console.WriteLine("Não há pacientes na fila de Médico Geral.");
paciente = pediatria.Dequeue();
Console.WriteLine("Atendendo próximo paciente de Pediatria: " + paciente);
Console.WriteLine("Não há pacientes na fila de Pediatria.");
if (especialidades.Count > 0)
paciente = especialidades.Dequeue();
Console.WriteLine("Atendendo próximo paciente de Especialidade: " + paciente);
Console.WriteLine("Não há pacientes na fila de Especialidade.");
Console.WriteLine("Escolha inválida.");
pacientesAtendidos.Add(paciente);
static void ExibirFilasDeEspera()
Console.WriteLine("Fila de espera para Médico Geral:");
ExibirFilaComTempoDeEspera(geral);
Console.WriteLine("Fila de espera para Pediatria:");
ExibirFilaComTempoDeEspera(pediatria);
Console.WriteLine("Fila de espera para Especialidade:");
ExibirFilaComTempoDeEspera(especialidades);
static void ExibirFilaComTempoDeEspera(Queue<string> fila)
foreach (var paciente in fila)
Console.WriteLine("{0} (Tempo de espera: {1} minutos)", paciente, minutosEspera);
static void SimularAtendimento()
Thread.Sleep(tempoAtendimento);
static void ExibirResumoEstatistico()
Console.WriteLine("----- Resumo Estatístico -----");
Console.WriteLine("Total de pacientes atendidos: {0}", pacientesAtendidos.Count);
Console.WriteLine("Tempo médio de espera: {0} minutos", (pacientesAtendidos.Count * tempoAtendimento.TotalMinutes) / pacientesAtendidos.Count);