MAPA - ADS - ESTRUTURA DE DADOS I - 52/2021
1ª QUESTÃO
Imagine que a Unicesumar está dando a oportunidade de os(as) acadêmicos(as) dos cursos de TI EAD participarem de soluções tecnológicas em seus processos de ensino à distância. Assim, a instituição convoca você a desenvolver um pequeno protótipo de sistema em linguagem C. Ocorre que toda atividade prática que os(as) estudantes entregam para serem corrigidas entram em uma fila, de forma que o último trabalho a ser enviado por alguém, sempre é inserido ao final. Ainda, a equipe de correção irá corrigir por primeiro, os trabalhos que foram enviados de forma antecipada. Assim, você parte para a mão na massa, e desenvolve um programa permite que o administrador do sistema (usuário) armazene as informações que o sistema acadêmico necessita para realizar as correções de cada atividade, a saber:
o RA do aluno
o Nome do arquivo
o Extensão do arquivo
o Matrícula do professor responsável pela correção
Ou seja, toda vez que o usuário cadastrar uma nova atividade, suas informações são adicionadas ao final da fila. Ainda, sempre que o usuário desejar remover uma atividade da fila, seu programa deve ser capaz de excluir o elemento do início da fila, mantendo a estrutura de dados organizada de forma similar ao que temos na ilustração a seguir:
O programa deve ter um menu principal em forma de laço de repetição que atenda aos seguintes requisitos:
• O menu sempre deve imprimir o conteúdo da fila (do início em direção ao fim);
• Após a impressão do conteúdo da fila, o usuário deve ser informado de que pode realizar as seguintes
operações:
o Inserir um elemento na fila;
o Remover um elemento da fila;
o Esvaziar a fila;
o Encerrar o programa.
A operação “Inserir um elemento na fila” deve, antes de mais nada, verificar se a fila já esta cheia. Se não houver mais espaço na fila, o usuário deve ser informado, e o programa volta para o menu inicial. Caso não esteja cheia, o programa deve pedir para que o usuário informe o RA do(a) aluno(a), nome do arquivo contendo a solução da atividade, a extensão do arquivo e a matrícula do professor responsável pela
correção, inserindo essas informações no fim da fila.
A operação “Remover um elemento da fila” deve tentar retirar a atividade que está na primeira posição da fila. Caso haja elemento para ser removido, todos os dados da respectiva atividade que será removido devem ser impressos na tela: RA do(a) estudante, nome do arquivo, extensão do arquivo e nome do(a) professor(a). Se a fila estiver vazia, o usuário deve ser informado e o programa simplesmente retorna ao
menu principal.
A operação “Esvaziar a fila” deve remover todos os elementos da fila.
A operação “Encerrar programa” deve finalizar o processo.
Observações:
a) O código-fonte deve ser escrito de forma a implementar estruturas de dados estáticas. Nesse caso, nossa fila deverá ter, no máximo, 5 posições para armazenar elementos (tamanho igual a 5);
b) A correção será feita em ambiente Dev C++, no padrão C ANSI. Assim, caso o(a) aluno(a) tenha desenvolvido seu código em outra IDE/Compilador, é importante que o(a) aluno(a) garanta que seu código também é compilável/executável em ambiente Dev C++. Essa é uma responsabilidade do(a) aluno(a), e não da equipe de correção;
c) Envie apenas um único arquivo-fonte com extensão .c para que sua atividade seja submetida à correção.
o Inserir um elemento na fila;
o Remover um elemento da fila;
o Encerrar o programa.
correção, inserindo essas informações no fim da fila.
Respostas
Estruturas de dados em fila operam na chamada lógica FIFO - primeiro a entrar, primeiro a sair - e a recuperação é feita na ordem de inserção. O objetivo desse artigo é permitir que o leitor compreenda o uso das filas na linguagem C. Para explicar o algoritmo, optamos por utilizar uma lista simplesmente encadeada para facilitar o entendimento até mesmo por iniciantes em linguagem C.
compilável/executável em ambiente Dev C++.
Essa é uma
c) Envie apenas um único arquivo-fonte com extensão .c para que sua atividade seja submetida à correção.
responsabilidade do(a) aluno(a), e não da equipe de correção;
c) Envie apenas um único arquivo-fonte com extensão .c para que sua atividade seja submetida à correção.
As filas (queue, em inglês) são um tipo de estrutura dinâmica de dados onde os elementos (ou nós) estão arranjados em lista que obedece as seguintes regras:
- Ao inserir um nó, ele vai para a última posição da estrutura
- Ao retirar um nó, é tirado o primeiro elemento da estrutura
Este tipo de estrutura de dados é dita ser FIFO (First in, first out), ou seja, o primeiro elemento a entrar na estrutura é o primeiro a sair.
O nome fila, por si só, já é auto-explicativo.
Imagine uma fila de banco. A primeira pessoa que chegou na fila, é a que vai ser atendida primeiro.
E se chegar mais alguém? Ela vai demorar mais pra ser atendida.
E se chegar uma outra? Ela será a última a ser atendida, pois quem está na sua frente é atendido antes.
Ou seja, sempre que inserimos elementos nessa fila, inserimos ao final.
E sempre que retiramos, estamos tirando o primeiro elemento da fila (o mais antigo), pois o que está na frente que vai sair antes.
compilável/executável em ambiente Dev C++.
responsabilidade do(a) aluno(a), e não da equipe de correção;