Você está na página 1de 3

Trabalho de Algoritmos - Arrays dinmicos

Introduo
Em ANSI-C padro arrays representam uma forma de manipular conjunto de dados
do mesmo tipo. H duas formas principais de se declarar um array em ANSI-C:

TIPO VAR[NUM], que cria um array do tipo TIPO de tamanho NUM, identificado
por VAR;
TIPO * VAR, que cria um ponteiro para uma rea de memria que contm
elementos do tipo TIPO;

Em ambos os casos, o tamanho da rea de memria reservada fixo, limitando o


uso da mesma.
Para melhorar o uso de arrays de nmeros inteiros em ANSI-C voc deve
desenvolver uma biblioteca (conjunto de funes) para facilitar o uso de arrays,
simplificando para o programador o controle dos limites de um array.

Objetivo
Neste trabalho voc deve desenvolver uma biblioteca de arrays dinmicos para
nmeros inteiros, provendo funes para buscar, inserir e remover elementos no array, sem
a preocupao sobre os limites do array.

Descrio
Para a realizao do trabalho voc deve baixar os arquivos array_int.h e
array_int.c, que contm a especificao de todas as funes a serem implementadas.
no arquivo array_int.h todas funes esto documentadas. O arquivo array_int.c deve
conter a implementao das funes definiodas. algumas funes esto implementadas e
podem ser usadas como exemplo para a implementao das outras funes.
Um exemplo de uso da biblioteca pode ser visto no arquivo main.c.

Implementao
A implementao do array dinmico de inteiros feito atravs de uma estrutura
(struct DynIntArray) que contm 3 campos, descritos a seguir:

values: um ponteiro para inteiros, usado para armazenar efetivamente os


elementos do array.
used: um inteiro, usado para guardar a quantidade de espaos usados no array
values.
capacity: um inteiro, usado para armazenar o tamanho real do array values.
A definio da estrutura feita na linha 23 do arquivo array_int.h:

struct DynIntArray{
int * values;
int capacity;
int used;
};
A figura a seguir ilustra os valores de cada campo da estrutura para uma situao
de um array com 3 (trs) elementos e capacidade de 8 elementos.

A funo que cria um novo array vazio est implementada na linha 33 do arquivo
array_int.c. Voc deve usar esta funo, e algumas outras tambm j implementadas,
para entender o modelo de programao implementar as funes que faltam.
Para que o usurio da biblioteca no tenha que controlar a memria usada pelo
array, uma funo auxiliar interna deve ser implementada e chamada sempre que for
necessrio aumentar a capacidade do array. Esta funo est definida na linha 21 do
arquivo array_int.c. Um exemplo da necessidade de uso da mesma pode ser visto na linha
75 do arquivo array_int.c, onde ao tentar inserir um elemento no final do array (funo
Array_insertLast()), necessrio verificar se a capacidade atual suporta a adio de
mais um elemento. Caso a capacidade esteja no limite, a biblioteca deve, dinamicamente,
aumentar a capacidade interna de armazenamento do array, sem que o programados
precise verificar e controlar o tamanho do array. Nesse caso o usurio da biblioteca
simplesmente chama a funo Array_insertLast().

Avaliao
A avaliao feita a partir do cdigo implementado no arquivo array_int.c.
Existem 6 (seis) funes a serem implementadas. A nota total do trabalho de 3,0 pontos,
onde a funo void Array_expand(struct DynIntArray * self, int *error)
vale 1,5 ponto e a soma das outras vale 1,5 ponto.
Alm do funcionamento correto da funo, os elementos de codificao a seguir
sero usados na avaliao:

Indentao
Nomes de variveis
Comentrios explicativos

Prazos e entrega
Voc deve entregar o cdigo fonte em um arquivo chamado array_int.c, atravs
do Edmodo. Toda a documentao deve ser feita em forma de comentrio no cdigo fonte.
O trabalho deve ser entregue at o dia 13/07/2015.

Você também pode gostar