Students
Advertisement

Filas[]

Fec

Fila Estática Circular

  • Enunciado
Implementação do TDA Fila Estática Circular (FEC) e aplicação.


  • Objetivo
Desenvolvimento de um TDA estático com reaproveitamento eficiente do vetor.


  • Implementação
Implementar todas as operações do TDA FEC e criar uma pequena aplicação de teste.


  • TDA FEC - privado
typedef struct FEC {
      int tamVet;   /* tamanho do vetor                       */
      int tamInfo;  /* tamanho, em bytes, do elemento         */
      int quant;    /* quantidade de elementos inseridos      */
      int inicio;   /* posição do elemento do início da fila  */
      int fim;      /* posição do elemento do fim    da fila  */
      void **vet;   /* vetor de ponteiros void para elementos */
} FEC;


  • TDA FEC - interface
int  criaFEC(ppFEC pp, int  tamVet, int tamInfo);
void destroiFEC(ppFEC pp);
int  reiniciaFEC(pFEC p);
int  testaVaziaFEC(pFEC p);
int  testaCheiaFEC(pFEC p);
int  buscaNaFrenteFEC(pFEC p, void *destino);
int  removeFEC(pFEC p);
int  insereFEC(pFEC p, void *novo);


  • Aplicação

Implementação de um buffer para leitura de um arquivo texto (.txt) de forma a disponibilizá-lo o mais rápido possível a outras aplicações e, além disto, exibi-lo na tela pausadamente a cada 50 caracteres. Segue o algoritmo:

  1. Abrir o arquivo
  2. Inserir todo seu conteúdo em um fila
  3. Fechar o arquivo (disponibilização)
  4. Mostrar na tela os primeiros 50 caracteres e uma mudança de linha
  5. Esperar 5 segundos (sleep(5);) para que o usuário possa ler o conteúdo
  6. Voltar ao passo 4 (até que o buffer, ou seja, a fila se torne vazia)


  • Dicas
1. Leitura de arquivo
FILE *arq;
char A;
arq = fopen("c:/.../.../nome_do_arquivo.txt", "r");
if (arq == NULL) {
      printf("erro!\n");
      return 0;
}
while ( ! feof(arq) ) {
      A = fgetc(arq);
}
fclose(arq);
2. Cálculo do tamanho do arquivo
#include <sys/stat.h>  //contém estrutura "struct stat" e função "stat"
struct stat atributos;
int tamanho;
if (stat("c:/.../.../nome_do_arquivo.txt", &atributos) == 0)
      tamanho = atributos.st_size;
else {
      printf("erro!\n");
      return 0;
}
Advertisement