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
Alunoda 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_alunoque pede os dados do aluno ao utilizador e devolve um registo de aluno com esses dados. - Escreva uma função
mostrar_alunoque 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
Alunode tamanhoMAX_ALUNOSe uma variáveln_alunosque 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
Alunojá 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
UCcriada
- 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_UCque recebe um apontador de UC e calcula a média das notas dos alunos. - Altera a função
mostrarUCpara 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
alunosda 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