![]() |
António Roberto Software |
|
Linguagens
de Programação 1
|
2º
ano da Licenciatura em Informática de Gestão
|
Aulas de 6 e 7 de Junho de 2002
6ª Etapa do Trabalho final
Aviso : O prazo de entrega do trabalho final é 14 de Junho. Cada grupo deverá entregar uma diskette com a solução na aula de 14 de Junho. Aconselha-se os alunos a cumprirem os tempos atribuídos às diversas etapas.
Passagem da versão 6 para a versão 7 do protótipo EditorGrafos
Lista de funcionalidades a implementar na versão 7 :
- Implementar o método OnEulerCircuito ( resposta à opção "Desenha Circuito" do menu "Circuito de Euler" )
- Objectivo : Desenhar um circuito de Euler no grafo, se ele existir
- Pistas
- Construa a lógica que permite encontrar um circuito de Euler na classe CEditorGrafosDoc
- Utilize o algoritmo de Hierholzer ( exemplo ) .Subdivida os passos do algoritmo em várias funções :
- CArco* CEditorGrafosDoc::ArcoNaoVisitado ( CNo *pNo )
- Devove um arco ainda não visitado ligado ao nó apontado por pNo
- void CEditorGrafosDoc::CalculaCircuito ( CNo *pNoInicial, CColPtrArcos &ListaArcos , COLORREF CorCircuito )
- Calcula um circuito utilizando arcos ainda não visitados e começando no nó apontado por pNoInicial
- CNo* CEditorGrafosDoc::NoInicialProxCircuito ( CColPtrArcos const &ListaArcos )
- Calcula o nó inicial do próximo circuito procurando na lista de arcos o primeiro nó que tenha um arco ainda não visitado
- void CEditorGrafosDoc::UneCircuitos ( CColPtrArcos &ListaArcos1, CColPtrArcos &ListaArcos2, CNo *pNo )
Une o circuito 2 ao circuito 1 com base num nó comum ( apontado por pNo ) aos dois circuitos ListaArcos <=> circuito
- Não se esqueça de acrescentar código na View que permita o desenho do circuito obtido.
- Pistas
- Utilize uma flag booleana m_CircuitoEuler para assinalar se está no modo desenhar circuito
- Para colorir os arcos, crie e seleccione um objecto da classe CPen
- Para implementar as setas
- são necessários conhecimentos de trignometria e geometria analítica. Peça ajuda aos seus professores de matemática.
- tem de saber, para cada arco, qual dos nós é o nó origem e qual dos nós é o nó destino
- Acrescente um botão ao toolbar com o editor de recursos
- Botão será activado quando se quiser passar do desenho do circuito para o desenho normal do grafo
- Atribua um ID ao novo botão
- Utilize o ClassWizard para definir o esqueleto da função que responde ao click no novo botão
- Utilize o ClassWizard para definir o esqueleto da função que activa/desativa o novo botão
- Solução só disponível no final do prazo de entrega do trabalho.
Projecto : EditorGrafos ( versão 7 )Tipo : MFC AppWizard( exe ) SDI Document Zip file com o projecto : EditorGrafos_v7.zip