Informática, perguntado por lukaxion27, 6 meses atrás

QUESTÃO 1
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.

Anexos:

Soluções para a tarefa

Respondido por Usuário anônimo
3

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:

0   p           u     N-1

   111 222 333 444 555 666        

Para tirar, ou remover (= delete = de-queue), um elemento da fila basta fazer

  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;

}

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; veja exercício abaixo.)


Usuário anônimo: 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);
Usuário anônimo: 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;
Usuário anônimo: c) Envie apenas um único arquivo-fonte com extensão .c para que sua atividade seja submetida à correção.
Usuário anônimo: Precisando de ajuda entre em contato com equipe SGP e solicite uma assessoria com a melhor equipe do mercado no desenvolvimento de trabalhos acadêmicos pelo whats 015997643162
Respondido por pablomiguel47
5

Resposta:

#include<stdio.h>

#include<stdlib.h>

#include<strings.h>

#include<locale.h>

#define tamanho 5  

typedef struct t_cadastro

{

   int ra;

   char tipo_a[15];

   char nome_a[15];

   char prof[15];

}t_cadastro;

typedef struct t_fila

{

   t_cadastro dados[tamanho];

   int ini;

   int fim;

}t_fila;

t_fila fila;

void enfileira(t_cadastro elemento){

   if(fila.fim==tamanho){

    printf("===================================ERRO====================================\n");

       printf("\nFila esta cheia.\n");

       system("pause");

       return;

   

   }else{

       int i;

       

       fila.dados[fila.fim]=elemento;

       

       fila.fim++;

       

       }

       

       

   }

   

t_cadastro desenfileira(){

t_cadastro elemento;  

   int i;

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

       printf("\nFila Vazia.\n");

       system("pause");

   }else{

       elemento = fila.dados[fila.ini];

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

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

       

       fila.fim--;

       return elemento;}

   

}

t_cadastro desenfileira_fila(){

t_cadastro elemento;  

   int i;

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

       printf("\nFila Vazia.\n");

       system("pause");

   }else{

       elemento = fila.dados[fila.ini];

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

       fila.dados[i] = fila.dados[i+5];

       

       fila.fim--;

       return elemento;}

   

}

void imprimeFila(){

   int i;

   printf("\nFila:\n");

   for(i=0;i<fila.fim;i++){

printf("\n\nRa do aluno: %04d", fila.dados[i].ra);

   printf("\nNome do arquivo: %s", fila.dados[i].nome_a);

   printf("\nTipo do arquivo: %s", fila.dados[i].tipo_a);

   printf("\nProfessor: %s", fila.dados[i].prof);

   

   }

}

int main(){

setlocale(LC_ALL, "Portuguese");

   t_cadastro goku;

   int escolha;

   fila.fim=0;

   fila.ini=0;

   

   

   

   do

   {

     

   system("cls");

   imprimeFila(goku);

   printf("\n\n\t\tMenu\n\n");

   printf("(1) Cadastrar na fila\n");

   printf("(2) Remover da fila\n");

   printf("(3) Esvaziar fila\n");

   printf("(0) Encerrar\n\n");

   printf("Escolha uma opção:");

   scanf("%d",&escolha);

   switch(escolha){

    case 1:

    system("cls");

    printf("\t\tCADASTRO NA FILA\n\n");

    printf("\n\nDigite o ra:");

    scanf("%d",&goku.ra);

    fflush(stdin);

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

    scanf("%s",&goku.nome_a);

    fflush(stdin);

 printf("\nDigite o tipo do arquivo:");

    scanf("%s",&goku.tipo_a);

    fflush(stdin);

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

    scanf("%s",&goku.prof);

    fflush(stdin);

       enfileira(goku);

       

       break;

       case 2:

           printf("\nRemovendo fila");

           

           desenfileira(goku);

       break;

       case 3:

        printf("\nRemovendo fila");

           

           desenfileira_fila(goku);

       break;

       case 0:

           printf("ENCERRANDO O PROGRAMA");

           return(0);

       break;

       

       default:

       printf("\nOPÇÃO INVÁLIDA\n");

       system("pause");

           

       }

   } while (escolha != 0);

   

 

   return(0);

}

Explicação:

Da um Ctrl + c e um Ctrl + v e entrega o mapa de vcs galera ^.^ corre que da tempo!!!


pablomiguel47: só que você vem e fala que ta errado mas não fala oque ta errado, ainda bem que consegui ajudar pelo menos umas 5. agora esquece vai.... já prepara a resposta pro mapa sub pra você vender e tosse, para eu não conseguir ajudar o pessoal pra tu vender sua resposta...
pablomiguel47: agr tchau
pablomiguel47: vou ler isso td não bro
pablomiguel47: bjs
pablomiguel47: esquece
Perguntas interessantes