Paradigmas de Programação II
2006.03.20

Objectivos:

O objectivo principal desta ficha é consolidar os conhecimentos sobre manipulação de arrays em C expandindo para a manipulação de arrays multidimensionais, nomeadamente as matrizes.

Para atingir esse fim, o aluno irá desenvolver pequenos programas em C.
Exercícios:
  1. Gestão de Armazens
  2. Contem ou Contido
  3. Média dos Alunos


Gestão de Armazens


Uma empresa tem 10 armazens e precisa de um programa que leia as vendas mensais dos 10 armazens, calcule a media de vendas e produza uma listagem dos armazens com vendas superiores à média calculada.


Contem ou Contido


Desenvolva um algoritmo e posteriormente codifique-o em C que dadas dumas matrizes de dimensões arbitrárias verifica se a primeira contem a segunda (considere que os valores armazenados nas matrizes são do tipo inteiro).


Média dos Alunos


Cada aluno de uma licenciatura em Ciências da Computação pode ter notas correspondentes a 10 disciplinas feitas durante o ano lectivo (caso não tenha sido avaliado positivamente a uma disciplina não terá essa nota).

(a) Declare as estruturas de dados (o modelo) necessárias para suportar o sistema de informação: um aluno tem um número (inteiro sequencial a partir de 1), um nome (string) e uma lista de notas (reais). Pense na hipótese de encarar o número do aluno como um código alfanumérico (para permitir números em qualquer escala, ou mesmo o uso de letras) e identifique as alterações daí decorrentes.

(b) Inicialize a estrutura de dados: na declaração e/ou numa função de inicialização que é chamada no início da função main().

(c) Crie as funções normais de manipulação de uma pequena base de dados:
  1. Inserir - de modo a manter a informação por ordem alfabética de nome. Numa 1ª versão, utilize o algoritmo por trocas directas e, numa 2ª versão, use a inserção ordenada;
  2. Remover - utilize a pesquisa sequencial ordenada para encontrar o registo a remover;
  3. Consultar - utilize a pesquisa dicotómica para encontrar o registo a consultar;
  4. Listar - liste todos os alunos armazenados, por ordem alfabética.

(d) Especifique uma função em C para calcular a média de cada aluno (faça uma função que dada a estrutura de dados principal e o identificador do aluno, produz como resultado a sua média); note que disciplinas não avaliadas não contam para a média (diferente de obter a classificação 0 numa disciplina).

(e) Calcule a média geral da turma.

(f) Calcule a média da turma em cada disciplina.

(g) Calcule a percentagem de faltas (ausência de nota).