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.