Exercícios

1) (Vectores) Escreva em linguagem C um programa que pede ao utilizador uma sequência de valores inteiros. O programa começa por pedir ao utilizador para definir o tamanho da sequência a introduzir. Supondo que n é o tamanho da sequência, o programa deverá ler do standard input n inteiros. No final, mostra todos os inteiros positivos que compõem a sequência.

2) (Pontos 2D e Rectângulos) Considere que um ponto é definido pelas suas coordenadas e que um rectângulo é definido pelos pontos dos cantos superior esquerdo e inferior direito. Considere ainda as seguintes definições para pontos e rectângulos: 

typedef struct { 
  int x; 
  int y; 
} Ponto; 

typedef struct { 
  Ponto se; 
  Ponto id; 
} Rectangulo; 


a) Implemente a função Ponto * lePontos(int n) que lê um conjunto de n pontos e retorna um vector contendo todos os pontos. Considere que n é um número pedido ao utilizador. 

b) Implemente a função void escrevePontos(Ponto * pontos, int n) que mostra no standard output os pontos contidos num vector de tamanho n. 

c) Implemente a função Rectangulo * defineRectangulo(Ponto * pontos, int n) que dado um vector de pontos de tamanho n devolve o rectângulo de menor área que contém todos os pontos do vector. 

3) (Vectores de Estruturas) Considere que se pretende ler do standard input a informação de um conjunto de inscrições de alunos a disciplinas e respectivas notas. A estrutura que guarda a informação de uma inscrição está definida do seguinte modo:

typedef struct { 
  int num_aluno; 
  char* cod_disc; 
  int nota; 
} Inscricao; 


a) Escreva em linguagem C a função Inscricao* lerInscricoes(int n) que lê um sequência de n inscrições do standard input e devolve um novo vector de inscrições de alunos em disciplinas. Assuma que o código de uma disciplina é uma sequência de letras e digitos com tamanho máximo de 10 caracteres. (veja p.f. o 5º slide do ponto da situação da aula T19)

b) Escreva em linguagem C a função int* distribuicaoNotas(Inscricao* ins, int n, char* disc) que dado um vector de inscrições de tamanho n devolve um novo vector de inteiros com a distribuição das notas de uma disciplina. Ou seja, na posição indice i do vector deverá conter o número de alunos que teve nota i à disciplina.

Soluções:

(ex1, ex2, ex3).