Árvore de busca binária com frequência de consultas

Segue anexo no arquivo .zip com instruções e informações do programa.

Por: Danilo Azevedo


Gerenciamento de Área de Alocação Dinâmica (Listas Encadeadas)

Implementação de um sistema de gerenciamento de trechos livres e ocupados de uma área de alocação dinâmica de memória. A área de alocação será chamada de buffer. O buffer será formado por N slots. Cada slot tem um índice, que varia de 0 a N - 1. Inicialmente o buffer será considerado vazio. O programa receberá solicitações de operações sobre o buffer, como solicitações para alocar um conjunto de slots (contíguos), desalocar os slots alocados em uma solicitação o anterior ou solicitar informações sobre área de alocação. O índice do slot onde uma área alocada ou livre inicia será chamado o índice inicial daquela área. O tamanho N do buffer (numero de slots) deverá ser uma constante no programa. Inicialmente deve-se atribuir o valor 20 a esta constante. Posteriormente, no entanto, o valor desta constante poderá ser alterado. Para a implementação deste exercício, deve-se utilizar listas implementadas com apontadores. Os formatos de entrada e saída do programa estão indicados nas seções a seguir. O programa deve ler da entrada padrão e escrever na saída padrão. Segue no anexo informações de como usar o código e o programa.

Por: Danilo Azevedo


Memória compartilhada, semáforo e criação de processos

Dois programas simples em C++ que usam recursos como memória compartilhada, semáforos e criação de processos para comunicarem entre si! Observação: depois de compilado haverá dois binários, um chamado gerenciador e outro com o nome de cliente. Execute o gerenciador pois o mesmo executará o cliente, e um depende do outro para funcionar corretamente!

Por: Perfil removido


Emulador de Chip8 (com gráficos)

Emulador de chip8, usa interpretação para executar os programas. Veja o CHIP8.txt para saber mais sobre a linguagem chip8, download de roms e instrução para compilar.

Por: Samuel Leonardo


Árvore AVL, usando arquivos para armazenamento de dados

Esta arvore foi implementada usando o conceito de TAD, por isso foram criados três arquivos: Obs.: eu deixei comentários nas linhas mais importantes desta implementação. avl-tree.h - nela estão contidos a estrutura da árvore e os protótipos de todas funções que foram usadas no programa. avl-tree.c - nela está contida a elaboração de todas as funções implementadas neste programa. avl-treeexecucao.c - nela está a função principal para a compilação de todo o programa. Os códigos fora elaborados, somente para serem compilados no Dev-C++: http://sourceforge.net/projects/dev-cpp/ Todos os códigos devem estar salvos na mesma pasta para o seu funcionamento.

Por: Marcos Augusto


Jantar dos Filósofos - Programação Paralela

Um programa concorrente especifica dois ou mais processos concorrentes, onde cada um executa um programa sequencial. Tais processos interagem por meio da comunicação, o que traz a necessidade de sincronização. O problema de sincronização mais conhecido é o do "Jantar dos Filósofos". Ele foi proposto por Dijkstra (1965) como um problema clássico de sincronização e possui a seguinte situação: 1) Cinco filósofos estão sentados ao redor de uma mesa circular para o jantar. 2) Cada filósofo possui um prato para comer macarrão. 3) Os filósofos dispõem de hashis e e cada um precisa de 2 hashis para comer. 4) Entre cada par de pratos existe apenas um hashi: Hashis precisam ser compartilhados de forma sincronizada. 5) Os filósofos comem e pensam, alternadamente. Eles não se atém a apenas uma das tarefas. 6) Além disso, quando comem, pegam apenas um hashi por vez: Se conseguir pegar os dois come por alguns instantes e depois larga os hashis. O problema é coordenar o uso dos hashi de maneira que nenhum filósofo fique com fome. Esse problema exemplifica muito bem muitas soluções e muitos problemas encontrados na programação concorrente. Pode facilmente ocorrer o deadlock se cada filósofo pegar o seu hashi da esquerda e se recusar a liberá-lo até ter comido. Pode ocorrer a inanição se dois filósofos conspirarem contra um terceiro. Na solução dada abaixo, é livre de impasse e permite o máximo paralelismo a uma número arbitrário de filósofos. Ela usa um arranjo de estado para controlar se um filsofo está comendo, pensando ou faminto. Um filósofo só pode mudar comer se nenhum de seus vizinhos estiverem comendo. O programa utiliza um arranjo de semáforos, um por filósofo, assim o filósofos famintos podem ser bloqueados se os garfos necessários estiverem ocupados. Comando para compilar no GCC: $ gcc -o jantar_dos_filosofos.o jantar_dos_filosofos.c -pthread Bom estudo.

Por: Uilian Ries






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts