Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Programação 2
Folha de Exercícios 3
2007/2008
Nota: Todos os programas abaixo descritos devem ser implementados em C++! Para cada alínea, teste na
função main as funções implementadas.
Neste exercício deverá reimplementar o programa gestAlunos, da Folha de Exercícios 2, que realiza a
gestão de turmas, mas agora utilizando o conceito de classes.
1. Considere a classe Aluno, com os membros-dado indicados na estrutura básica da classe abaixo:
class Aluno {
string nome;
string curso;
int numero;
int media;
//...
};
a) Complete a estrutura acima e implemente um construtor padrão, sem argumentos, que inicializa todos
os atributos com os valores “”, para nome e curso, e 0, para numero e media. Implemente também
um construtor que inicializa todos os atributos com valores fornecidos como argumento, excepto media,
que terá o seguinte protótipo:
Aluno(string umNome, string umCurso, int umNumero);
b) Considere que um aluno, durante o tempo de estudante, poderá mudar de curso e número algumas
vezes, mas nunca de nome, e a sua média também poderá sofrer alterações. Implemente os membrosfunção adequados para este efeito, ou seja, escrita e leitura, apenas escrita ou apenas leitura, consoante o
tipo de acesso que se deseje dar a cada membro-dado.
c) Implemente o membro função
string sigla();
que retorna a sigla de um determinado aluno, formada pelas iniciais do seu nome; p. ex., o aluno Pedro
Álvares Cabral terá a sigla “PAC”.
d) Implemente o membro função
void imprimirAluno(ostream &os);
que imprime na stream de saída indicada, que poderá ser um ficheiro ou o ecrã, p. ex., as informações de
um determinado aluno, obedecendo ao seguinte formato:
<número> <nome> <média>
2. Considere agora a classe Turma, com os membros-dado indicados na estrutura básica da classe abaixo:
class Turma {
string curso;
int numero;
int ano;
int capacidade;
//...
};
FEUP/MIEEC
Folha Nº3
Página 1 de 2
Programação 2
2007/2008
a) Quando uma turma é criada, deve-se indicar obrigatoriamente o curso a que pertence, o seu número, e
o ano em que está disponível no curso. A sua capacidade, se não for indicada, assumirá o valor 20. Defina e
implemente o construtor adequado para esta classe. Especifique e implemente também os métodos de
acesso aos membros-dado privados da classe.
b) Implemente o membro-função
string codigoTurma();
que retorna o código de uma determinada turma. O código de uma turma é formado pelo seu ano, iniciais
do curso e número da turma; p. ex., a turma 12 do primeiro ano do Mestrado Integrado em Engenharia
Electrotécnica e de Computadores terá como código 1MIEEC12.
c) Implemente o membro-função
int inscreverAluno(Aluno novoAluno);
que inscreve na turma um novo aluno, caso ainda haja lugar disponível, ou seja, o número de inscritos é
menor que a capacidade da turma. A função retornará a ordem de inscrição do aluno na turma, ou 0, caso
a turma esteja cheia. As informações dos alunos de uma turma são guardadas num ficheiro de nome
<codigoTurma>.txt. Teste esta função com a inscrição de vários alunos pelo utilizador, a partir do
teclado, cessando quando a capacidade da turma for atingida ou quando o utilizador assim o desejar, com a
indicação de Ctrl+D.
d) Implemente o membro-função
Aluno procurarAluno(string sigla);
onde sigla é formada pelas iniciais do nome do aluno (p. ex., Pedro Álvares Cabral terá sigla “PAC”). A
pesquisa será efectuada sobre o ficheiro <codigoTurma>.txt, e a função retornará o objecto aluno
cujas inicias são indicadas no argumento sigla. Implemente também o membro-função Aluno
procurarAluno(int numero), que realiza a procura pelo número do aluno, retornando o objecto
aluno correspondente.
e) Implemente o membro-função
void lancarNota(Aluno &aluno, int mediaAluno);
que actualiza a média do aluno para mediaAluno. Se o aluno já estiver inscrito na turma guardada no
ficheiro <codigoTurma>.txt, a função deverá fazer reflectir no ficheiro a nova média do aluno.
f) Implemente o membro-função
void relatorioDeNotas(ostream& os);
que lê do ficheiro <codigoTurma>.txt todos os alunos inscritos na turma e imprime numa stream de
saída, ecrã ou ficheiro p.ex., o primeiro e o último nome de cada aluno, seguidos da sua média; p. ex.
Cristiano Ronaldo 10.
Nota: O ficheiro 1MIEEC15.txt já contém informações sobre alguns alunos inscritos numa turma, e pode ser
utilizado para testar as implementações acima.
FEUP/MIEEC
Folha Nº3
Página 2 de 2
Download

Enunciado 3