Informática, perguntado por diegoaparecido2015, 7 meses atrás

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.


Usuário anônimo: A operação “Esvaziar a fila” deve remover todos os elementos da fila.
Usuário anônimo: A operação “Encerrar programa” deve finalizar o processo.

Soluções para a tarefa

Respondido por Usuário anônimo
0

O primeiro elemento da fila está na posição p e o último na posição u-1.  A fila está vazia se  p == u  e cheia se  u == N.   A figura mostra uma fila que contém os números 111, 222, … , 666:

Estamos supondo aqui que as variáveis fila, p, u e N são globais, isto é, foram definidas fora do código das funções.  (Para completar o pacote, precisaríamos de mais três funções: uma que crie uma fila, uma que verifique se a fila está vazia e uma que verifique se a fila está cheia;  

  x = fila[p++];  

Isso equivale ao par de instruções  x = fila[p]; p += 1;,  nesta ordem.  É claro que você só deve fazer isso se tiver certeza de que a fila não está vazia.   Para colocar, ou inserir (= insert = enqueue), um objeto y na fila basta fazer

  fila[u++] = y;  

Isso equivale ao par de instruções  fila[u] = y; u += 1;,  nesta ordem.  Note como esse código funciona corretamente mesmo quando a fila está vazia. É claro que você só deve inserir um objeto na fila se ela não estiver cheia; caso contrário, a fila transborda (ou seja, ocorre um overflow).

Para ajudar o leitor humano, podemos embalar as operações de remoção e inserção em duas pequenas funções. Se os objetos da fila forem números inteiros, podemos escrever

int tiradafila (void) {

  return fila[p++];

}

void colocanafila (int y) {

  fila[u++] = y;

}


Usuário anônimo: 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.
Usuário anônimo: 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.
Perguntas interessantes