Jump to content

Recommended Posts

Posted

Boas pessoal,

Estou aqui com dificuldades na forma como irei definir a estrutura de dados que melhor se adecue ao projecto que tenho que desenvolver. Uma vez que esta tem que ser robusta, e ao mesmo tempo tem que ser bastante eficiente.

Não quero com isto, que ninguém faça o trabalho por mim, apenas coloquei aqui o enunciado para não haver dúvidas acerca daquilo que se trata realmente o projecto, e facilitar a sua compreensão.

Sendo assim, deixo aqui a explicação do projecto:

Neste projecto pretende-se implementar vários modelos de simulação. Os modelos são uma forma de simular situações reais com o intuito de as compreender melhor. Neste projecto pretende-se implementar no sistema operativo Linux utilizando a linguagem de programação C usando a plataforma gráfica OpenGL/GLUT vários modelos com um grau crescente de complexidade.

Utilizando um processo semelhante ao anterior pretende-se simular o crescimento

urbano de uma cidade. Neste caso, o programa lê de um ficheiro o mapa

da cidade. Pretende-se que cada sector do mapa possa ter os seguintes valores

possíveis:

R    residencial;

C    comercial;

E    estrada;

A    aquático;

F    forestal;

G    agrícola.

O programa lê também de um ficheiro as regras de crescimento da cidade.

Estas regras exprimem o novo estado de um sector em funçãoo do valor actual e

dos valores dos sectores vizinhos. Este ficheiro explicita primeiro qual o tipo de

vizinhança:

cruz                             os 4 sectores ortogonais;

quadrado                    os 8 sectores vizinhas (ortogonais e diagonais);

círculo                        composto por 12 sectores (os 8 vizinhos mais os 4 ortogonais distantes de um sector).

Cada regra é explicitada utilizando uma sintaxe simples. Essa sintaxe é da

forma:

antecedente : novo valor

onde antecedente é uma conjunção de condições separadas por vírgulas sendo

cada condição da forma valor op número onde valor pode ser um dos valores

R, C, E, A, F, G ou s sendo s o sector actual e op é um operador de comparação =, >, <, >= ou <=. Nas condições da forma s = valores o campo valores pode ser um valor ou um conjunto de valores separado pelo operador |. Seguem-se

alguns exemplos ilustrativos:

s = C : C                                  se o sector é comercial, continua a ser comercial

s = F | G, C = 3 : C                    se o sector é florestal ou agrícola e 3 sectores vizinhos são comerciais, o sector passa a ser comercial

No caso de várias regras se poderem aplicar, aplica-se a primeira regra.

Assim, logo que uma regra se possa aplicar a um sector, não é necessário verificar as regras seguintes para esse sector.

Aquilo que eu pretendo é descobrir a melhor estrutura de dados para desenvolver o projecto, tal como ja disse anteriormente, para este ser robusto e ao mesmo tempo eficiente.

Já agora, convém salientar o facto de que posteriormente, este projecto terá de ser adaptado, ou seja, a partir de todo o código teremos que desenvolver um simulador genério que seja capaz de simular uma outra coisa qualquer com um diferente número de parâmetros. Deste modo, ao desenvolver o código correspondente a este projecto, devo já estar a pensar na fase seguinte do projecto.

Se alguém puder sugerir uma forma para desenvolver o projecto, de modo a minimizar os problemas futuros, ficava muito agradecido!

Cumprimentos, kripton2007

Posted

Se já pensaste em alguma forma de o fazer, mesmo que penses que esteja errada, coloca aí.

Falo por mim, não compreendo o que é pedido. Pode ser que vendo algo em concreto ajude a compreender.

Desaparecido.

Posted

Pois... o problema está mesmo em começar a fazer, uma vez que não tenho ainda nenhuma ideia concreta.

Entretanto, pedi ajuda a um colega meu e ele sugeriu isto:

a estrutura ser uma lista ligada em que cada elemento contém uma Regra (cada regra é um conjunto de condições e um valor final, e corresponde a uma linha do ficheiro que é dado)

cada Regra é uma estrutura com a Lista de Condições, e o Valor Final

a Lista de Condições é outra lista ligada em que cada elemento é uma condição.

uma condiçao é constituida pelo valor da esquerda, o valor da direita, e o operador.

Guardar um operador com um int e usar um enum para corresponder cada int a um operador.

Foi então esta a sugestão dele... o meu problema neste momento é mesmo começar... não sei o que tenho que fazer em 1º lugar. :s

Se puderem ajudar, ficava muito agradecido!

Cumprimentos kripton2007  😛

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.