Struct
Diogo Silva
CAP / ENGEL
dasilva@academiafa.edu.pt
–
Struct
–
videos 1/2
- Intro, motivação | 1.5min
- Declarar, aceder | 4min
- Comparação, estruturas dentro de estruturas, funções | 4min
- typedef | 2min
- estruturas e apontadores | 4min
–
videos 2/2
- Demo 1 | 10min
- Demo 1 | correção de criar_aluno | 3min
- Demo 1a | vector de Aluno | 4min
- Demo 1b
- Demo 1c
- Demo 1d
- Demo 1f
- Demo 1g
–
Exercício 1
- Escreva um programa que guarde e mostre o registo de um aluno
Aluno
da cadeira de programação. - Um aluno tem os seguintes parâmetros:
nome
(string)NIP
(int)notas
(vector com 3 números reais para guardar as classificações das avaliações)
- Escreva uma função
criar_aluno
que pede os dados do aluno ao utilizador e devolve um registo de aluno com esses dados. - Escreva uma função
mostrar_aluno
que recebe o apontador de um registo de aluno e imprime os seus valores na consola.
–
Exercício 1a
- Expanda o programa anterior para mostrar os registos dos alunos da cadeira de Programação.
- Crie um vector de
Aluno
de tamanhoMAX_ALUNOS
e uma variáveln_alunos
que recebe do utilizador quantos alunos vai receber. - Peça os dados de todos os alunos a receber e no final, escreva na consola os dados de todos os alunos.
–
Exercício 1b
- Modifique o programa anterior por forma a termos várias Unidades Curriculares (UC).
- Crie uma estrutura para uma UC, com os seguintes campos:
nome
(string, max 50 chars)abreviatura
(vector 4 chars)n_creditos
(int): número de créditos (ECTS)alunos
(vector de apontadores para Aluno, max 100): lista de alunos inscritosn_inscritos
(unsigned char): número de alunos inscritosavals
(vector de reais): notas finais dos alunos à UC
- Agora a estrutura
Aluno
já não precisa do camponotas
, estes dados estão guardados nas UCs. Remova esse campo. - Agora a lista de
Aluno
é a lista de todos os alunos. - Crie um vector para a lista de UCs (tamanho de
MAX_UC
) namain
. - Crie a função
criarUC
:- não recebe argumentos
- pede os dados de uma
UC
(nome, abreviatura, número de créditos) ao utilizador - devolver a
UC
criada
- Cria a função
mostrarUC
- recebe um apontador de
UC
- mostra os dados da
UC
, incluindo a lista dos alunos inscritos
- recebe um apontador de
- Dicas:
- para facilitar o teste das funcionalidades, inicialize o vector de todos os alunos com dados no código
- para facilitar o teste das funcionalidades, inicialize o vetor de todas as UCs com algumas UCs já com alunos inscritos
–
Exercício 1c
- Implementa a função
media_UC
que recebe um apontador de UC e calcula a média das notas dos alunos. - Altera a função
mostrarUC
para mostrar a média da UC que recebe.
–
Exercício 1d
- Implementa a função
media_aluno
- recebe
- apontador de Aluno
- lista de todas as UCs
- devolve
- valor real com a média ponderada (ter em conta os ECTS de cada UC) de todas as UCs em que o aluno está inscrito
- esta função tem de percorrer todas as UCs e verificar se o aluno está inscrito nessa UC
- recebe
–
Exercício 1e
- Implementa a função
media_total
- recebe
- lista de todos os alunos
- lista de todas as UCs
- devolve
- real correspondente à média aritmética da média ponderada de todos os alunos
- recebe
–
Exercício 1f
- Implementa a função
inscrever_UC
- recebe apontador de
UC
- lista de todos os alunos
- recebe apontador de
- mostra lista de todos os alunos
- utilizador escolhe quais os alunos da lista a inscrever nesta UC
escrever os índices e terminar lista com algum carater não numérico
exemplo:
- adicionar os alunos escolhidos ao vetor
alunos
da UC
–
Exercício 1g
- Implementa a função
inscrever_aluno
- recebe
- apontador de
Aluno
- lista de todas as UCs
- apontador de
- mostra lista de todas as UCs e permite escolher as UCs em que o aluno está inscrito
- para cada UC selecionada
- adicionar o aluno à lista de inscritos
- não devolve nada
- recebe