Exercício 1. Implemente um programa para resolver sistemas lineares da forma:
ax + by = u
cx + dy = v,
dados a, b, c, d, u e v.
Basta calcular os valores de x e y em função de a, b, u, c, d e v. Em particular: x = (v - du/b)/(c - da/b) e y = (v - cu/a)/(d - cb/a). Como a questão não especificou, não é preciso tratar sistemas sem solução ou com infinitas soluções.
Exercício 2. Fazem parte da declaração de uma função int fatorial(int N) { ... } (marque todos que aplicarem):
Alocação de memória e registro de ativação não fazem parte da declaração de uma função. Eles existem apenas quando o programa está em execução.
Exercício 3. Implemente uma função que processa um arranjo de ponteiros para struct atleta e retorne a altura média dos atletas e a idade do atleta mais novo. Considere que a estrutura atleta foi definida como:
struct atleta {
char nome[80];
double altura;
int idade;
};
Sua função deve ter o seguinte cabeçalho:
void estatisticas(struct atleta **v, int n, double *altura_media, int *menor_idade) {
int i;
*altura_media = 0;
*menor_idade = INT_MAX;
for(i = 0; i < n; i++) {
if(v[i]->idade < *menor_idade) {
*menor_idade = idade;
}
*altura_media += v[i]->altura;
}
*altura_media /= n;
}
Desafio. Na Prática 8 nós vimos o conceito de pilha. Uma pilha aceita as operações de empilhar (colocar um elemento no topo da pilha) e desempilhar (retirar e retornar o elemento no topo da pilha. Uma fila é uma estrutura de dados similar que suporta as operações de enfileirar (colocar um elemento no final da fila) e desenfileirar (retirar e retornar o elemento no começo da fila). A diferença é que na pilha o último elemento a entrar é o primeiro a sair, e na fila o primeiro elemento a entrar é o primeiro a sair.
Se você precisar usar um sistema de computação que só possua pilhas, descreva como você pode implementar uma fila eficiente usando duas pilhas.