Faculdade de Engenharia da Universidade do Porto
Prova de Avaliação:
1ª Chamada 1998/99 Duração: 2 horas Com Consulta 18/6/1999
Licenciatura em Engenharia Electrotécnica e de Computadores
Algoritmos e Estruturas de Dados, 1998/99
O que é que aparece escrito no ecrã quanto é executado o seguinte programa em C++?
#include <iostream.h>
class Hora {
public: Hora(int h = 12, int m = 0, int s = 0) {
horas = h; mins = m; segs = s; }
void Mostra() const {
cout << horas << ":" << mins << ":" << segs << endl; }
Hora & Incrementa(int h, int m, int s) {
m += s / 60; segs += s % 60;
h += m / 60; mins += m % 60;
horas += h % 24;
return *this; }
private: int horas; int mins; int segs;
};
int main() {
Hora h1, h2(14,0,0), & h3 = h2;
h1.Mostra(); h2.Incrementa(0,90,30).Mostra(); h3.Mostra();
return 0;
}
2. [6 valores]
Por exemplo, para os seguintes dados de entrada (não necessariamente introduzidos neste formato)
Escreva uma
função CountDistinct, a acrescentar à
classe Chain (representação de lista baseada em
ligações) estudada nesta disciplina, que conta e retorna
o número de elementos distintos da lista, supondo que esta
está ordenada (por qualquer ordem). Calcule a complexidade
temporal da sua implementação.
Escreva
uma função CountLeaves, a acrescentar à
classe BinaryTree estudada nesta disciplina,
que calcula e retorna o número de folhas (nós sem
filhos) existentes na árvore binária.
Pretende-se escrever um programa em C++ para simular a
execução de uma série de tarefas; cada tarefa
é caracterizada por um tempo de execução
(duração) e um conjunto de tarefas dependentes
(dependentes), isto é, um conjunto (possivelmente vazio) de
tarefas que têm início após a tarefa terminar.
Tarefa |
duração |
dependentes |
1 |
2 |
{2, 4} |
2 |
1 |
{3} |
3 |
5 |
{} |
4 |
3 |
{} |
sendo 1 a tarefa inicial, tínhamos a seguinte sequência de execução: