Vamos alterar um pouco essa definição de fila para atender a um problema real. Imagine que você entra em uma fila em um banco que é gerenciada através de senhas. Porém, não é uma fila única e simples, mas uma fila que comporta diferentes situações: • Existem 4 caixas realizando o atendimento. • As senhas distribuídas possuem uma letra, que indica a categoria, seguida por um número sequencial. • Considere as seguintes categorias: – C – Comum – P – Prioridade (idosos, gestantes, etc.) – R – Atendimento rápido (operações simples) • O caixa 1 atende às prioridades. Se não houver prioridades na fila, atendem o próximo da fila, de qualquer categoria. • Os caixas 2 e 3 realizam atendimentos comuns. Se não houver, atendem o próximo da fila, de qualquer categoria. • O caixa 4 é especial para atendimentos rápidos. Se não houver, atendem o próximo da fila, de qualquer categoria.

R$40,00
Adicicionar ao Checkout
Tags: 
DESCRIÇÃO

Vamos alterar um pouco essa definição de fila para atender a um problema real. Imagine que você entra em uma fila em um banco que é gerenciada através de senhas. Porém, não é uma fila única e simples, mas uma fila que comporta diferentes situações: • Existem 4 caixas realizando o atendimento. • As senhas distribuídas possuem uma letra, que indica a categoria, seguida por um número sequencial. • Considere as seguintes categorias: – C – Comum – P – Prioridade (idosos, gestantes, etc.) – R – Atendimento rápido (operações simples) • O caixa 1 atende às prioridades. Se não houver prioridades na fila, atendem o próximo da fila, de qualquer categoria. • Os caixas 2 e 3 realizam atendimentos comuns. Se não houver, atendem o próximo da fila, de qualquer categoria. • O caixa 4 é especial para atendimentos rápidos. Se não houver, atendem o próximo da fila, de qualquer categoria.



Vamos alterar um pouco essa definição de fila para atender a um problema real. Imagine que você entra em uma fila em um banco que é gerenciada através de senhas. Porém, não é uma fila única e simples, mas uma fila que comporta diferentes situações:

• Existem 4 caixas realizando o atendimento.
• As senhas distribuídas possuem uma letra, que indica a categoria, seguida por um número sequencial.
• Considere as seguintes categorias:
– C – Comum
– P – Prioridade (idosos, gestantes, etc.)
– R – Atendimento rápido (operações simples)
• O caixa 1 atende às prioridades. Se não houver prioridades na fila, atendem o próximo da fila, de qualquer categoria.
• Os caixas 2 e 3 realizam atendimentos comuns. Se não houver, atendem o próximo da fila, de qualquer categoria.
• O caixa 4 é especial para atendimentos rápidos. Se não houver, atendem o próximo da fila, de qualquer categoria.

Segue uma implementação em linguagem C seguindo as regras apresentadas.
 

1 //Bibliotecas

2 #include <stdio.h>

3 #include <stdlib.h>

4 #include <locale.h>

5

6 //Constantes

7 #define tamanho 20

8

9 //Estrutura da Senha

10 typedef struct tsenha {

11    int numero;

12    char tipo;

13 } tsenha;

14 

15 //Estrutura da Fila

16 struct tfilabanco {

17    tsenha dados[tamanho];

18    int ini;

19    int fim;

20 };

21

22 //Variáveis globais

23 struct tfilabanco fila;

24 int op, proximo;

25

26 //Protipação

27 void fila_entrar();

28 void fila_sair();

29 void fila_mostrar();

30 void menu_mostrar();

31

32 //Função principal

33 int main(){

34    setlocale(LC_ALL, “Portuguese”);

35    op = 1;

36    proximo = 1;

37    fila.ini = 0;

38    fila.fim = 0;

39    while (op != 0) {

40        system(“cls”);

41        fila_mostrar();

42        menu_mostrar();

43        scanf(“%d”, &op);

44        switch (op) {

45            case 1:

46                fila_entrar();

47                break;

48            case 2:

49                fila_sair();

50                break;

51        }

52    }

53    return 0;

54 }

55

56 //Adicionar um elemento no final da Fila

57 void fila_entrar(){

58    if (fila.fim == tamanho) {

59        printf(“\nA fila está cheia, volte outro dia!\n\n”);

60        system(“pause”);

61        return;

62    }

63

64    char tipo;

65    printf(“\nEscolha o tipo do atendimento:”);

66    printf(“\nC – Comum”);

67    printf(“\nP – Prioridade”);

68    printf(“\nR – Rápido: “);

69    scanf(” %c”, &tipo);

70    if (tipo != ‘C’ && tipo != ‘P’ && tipo != ‘R’) {

71        printf(“\nTipo de atendimento inválido!\n\n”);

72        return;

73    }

74    fila.dados[fila.fim].tipo = tipo;

75    fila.dados[fila.fim].numero = proximo;

76    proximo++;

77    fila.fim++;

78 }

79

80 //Retirar o primeiro elemento da Fila de acordo com o caixa

81 void fila_sair() {

82    if (fila.ini == fila.fim) {

83        printf(“\nFila vazia, mas logo aparece alguém!\n\n”);

84        system(“pause”);

85    } else {

86        int caixa;

87        char tipoatendimento;

88        printf(“\nQual caixa vai atender (1 a 4)?: “);

89        scanf(“%d”, &caixa);

90        switch (caixa) {

91            case 1:

92                tipoatendimento = ‘P’;

93                break;

94            case 2:

95            case 3:

96                tipoatendimento = ‘C’;

97                break;

98            case 4:

99                tipoatendimento = ‘R’;

100                break;

101            default:

102                printf(“\nValor inválido!”);

103                return;

104        }

105        // Define a posição do elemento aser removido como 0

106        int posicao = 0;

107

108        // Procura elemento do tipo correspondente

109        for (int i = 0; i < tamanho; i++) {

110            if (fila.dados[i].tipo == tipoatendimento) {

111                posicao = i;

112                break;

113            }

114        }

115

116        printf(“\n\n###### ATENDIMENTO #########\n”);

117        printf(“Senha: %c-%d\n”, fila.dados[posicao].tipo, fila.dados[posicao].numero);

118        printf(“Caixa: %d\n”, caixa);

119        printf(“###### ATENDIMENTO #########\n\n”);

120

121        // Retira elemento da posição e move os demais

122        for (int i = posicao; i < tamanho; i++) {

123            fila.dados[i].numero = fila.dados[i+1].numero;

124            fila.dados[i].tipo = fila.dados[i+1].tipo;

125        }

126        fila.dados[fila.fim].numero = 0;

127        fila.dados[fila.fim].tipo = ‘ ‘;

128        fila.fim–;

129    }

130 }

131

132 //Mostrar o conteúdo da Fila

133 void fila_mostrar() {

134    int i;

135    printf(“[ “);

136    for (i = 0; i < tamanho; i++) {

137        printf(“%c-%d “, fila.dados[i].tipo, fila.dados[i].numero);

138    }

139    printf(“]\n\n”);

140 }

141

142 //Mostrar o menu de opções

143 void menu_mostrar() {

144    printf(“\nEscolha uma opção:\n”);

145    printf(“1 – Nova senha\n”);

146    printf(“2 – Atender\n”);

147    printf(“0 – Sair\n\n”);

148 }


Fonte: Elaborado pelo professor, 2024.

Baseado nas regras apresentadas e no código fonte apresentado, RESPONDA às perguntas a seguir:

1- Explique como é possível armazenar número e letra para cada senha nessa solução.
2- Explique como é que o caixa 4 consegue chamar primeiro quem tem senha de atendimento rápido, detalhando esse trecho do algoritmo, e o que acontece caso não haja nenhuma senha dessa categoria.
3- Suponha que a fila esteja composta por: P-512, R-513, C-514, C-515, P-516. Quando o caixa 3 fizer uma chamada, qual senha será atendida? Como fica a fila após esse atendimento?
4 – Nas linhas 76 e 77 há dois incrementos de variáveis. Por que isso é feito e qual é a diferença entre essas variáveis?

O que devo entregar?
Deverá ser entregar as respostas das 4 perguntas anteriores em um arquivo de WORD ou PDF, conforme formulário padrão constante nos materiais da disciplina.

Orientações:
1. Acesse o link com um vídeo tutorial para ajudá-lo neste processo de criação e desenvolvimento.
2. A entrega deve ser feita exclusivamente por meio do Template de entrega da atividade MAPA disponível no material da disciplina.
3. Antes de enviar sua atividade, certifique-se de que respondeu a todas as perguntas e realize uma cuidadosa correção ortográfica.
4. Após o envio não são permitidas alterações, ou modificações. Logo, você tem apenas uma chance de enviar o arquivo corretamente. Revise bem antes de enviar!
5. Lembre-se que evidências de cópias de materiais, incluindo de outros acadêmicos, sem devidas referências serão inquestionavelmente zeradas. As citações e referências, mesmo que do livro da disciplina, devem ser realizadas conforme normas da Instituição de Ensino.
6. Não são permitidas correções parciais no decorrer do módulo, ou seja, o famoso: “professor, veja se minha atividade está certa?”. Isso invalida seu processo avaliativo. Lembre-se que a interpretação da atividade também faz parte da avaliação.
7. Procure sanar suas dúvidas junto à mediação em tempo hábil sobre o conteúdo exigido na atividade, de modo que consiga realizar sua participação.
8. Atenção ao prazo de entrega, evite envio de atividade em cima do prazo. Você pode ter algum problema com internet, computador, software etc. e os prazos não serão flexibilizados, mesmo em caso de comprovação.

Bons estudos!
Em caso de dúvidas, encaminhar mensagem ao seu Professor(a) Mediador(a).

 

Olá, somos a Prime Educacional!

Nossa equipe é composta por profissionais especializados em diversas áreas, o que nos permite oferecer uma assessoria completa na elaboração de uma ampla variedade de atividades. Estamos empenhados em garantir a autenticidade e originalidade de todos os trabalhos que realizamos.

Ficaríamos muito satisfeitos em poder ajudar você. Entre em contato conosco para solicitar o seu serviço.
Aponte o celular para abrir o WhatsApp
FEEDBACKS
PRODUTOS RELACIONADOS

Item adicionado com sucesso ao carrinho

Este item já foi adicionado ao carrinho