Filas[]
- 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:
- Abrir o arquivo
- Inserir todo seu conteúdo em um fila
- Fechar o arquivo (disponibilização)
- Mostrar na tela os primeiros 50 caracteres e uma mudança de linha
- Esperar 5 segundos (sleep(5);) para que o usuário possa ler o conteúdo
- 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; }