Faculdade de Engenharia da Universidade do Porto
Prova de Avaliação:
Recurso 1998/99, Duração: 2 horas,
Com Consulta, 27/7/1999
Pergunta 2, [6 valores]
Pergunta 3, [6 valores]
Pergunta 4, [3 valores]
Licenciatura em Engenharia Electrotécnica e de Computadores
Algoritmos e Estruturas de Dados, 1998/99
Considere o seguinte programa em C++:
#include <iostream.h>
class Numbers {
public:
Numbers(int max= 5) // constructor
{ size= max; data = new int[max];
for (int i=0; i < size; i++) data[i]= fib(i); }
~Numbers() { delete [] data; } // destructor
const void Output() const
{ for (int i=0; i < size; i++) cout << data[i] << " "; }
private:
int fib(int n) {if (n<=1) return 1; else return fib(n-1) + fib(n-2);}
int size; int *data;
};
main() {
Numbers x= Numbers(4);
x->Output();
return 0;
};
Averigue se este programa contém erros. Em
caso afirmativo identifique-os claramente e corrija-os. Apresente
ainda os resultados da execução do programa juntamente
com todas as contas que necessitar fazer.
Considere o tipo de dados abstracto LinearList e uma sua
implementação, baseada em endereçamento
indirecto, através da classe IndirectList, estudados nesta disciplina.
Adicione a esta classe uma função-membro Count, que conta e
devolve o número de elementos de valor superior ao de um dado
valor n
passado como parâmetro.
Duas árvores dizem-se semelhantes se têm a mesma
"forma", mesmo que os conteúdos dos nós sejam
diferentes. Por exemplo:
A semelhança de duas árvores pode-se definir
recursivamente da seguinte forma: i) se ambas as árvores
são vazias, então são semelhantes; ii) se uma
das árvores é vazia e a outra não, então
não são semelhantes; iii) se nenhuma das árvores
é vazia, são semelhantes se e só se as suas
subárvores esquerda e direita são semelhantes. Escreva
uma função
Suponha que se pretende escrever um programa em C++ que recebe
à entrada as coordenadas x e y de um conjunto de
pontos e uma distância de referência d, e produz
à saída os mesmos pontos agrupados em
"clusters". Um "cluster" é um conjunto de
pontos tal que, para cada ponto p desse conjunto, existe outro
ponto p’ que dista de p de uma distância igual ou
inferior a d. À direita tem um exemplo de um conjunto
de pontos com 3 "clusters".
Diga que estruturas de dados e algoritmos estudados nesta disciplina
(ou construídos a partir deles), seriam adequados para resolver
este problema e apresente uma breve justificação das
escolhas efectuadas.
Analise a complexidade temporal do algoritmo que apresentou.
[Página da disciplina]
[J. Pascoal Home page]
[J. Lopes Home page]
João Pascoal de Faria ([email protected]) /
João Correia Lopes (jlopes AT fe.up.pt)
Last modified: Mon Jul 26 20:02:37 1999