Você está na página 1de 3

Exercício para P2 envolvendo TAD, montagem de projeto, etc

2010/2

AVISO IMPORTANTE: estou enviando apenas um exercício para que seja montado um
projeto com arquivos recebidos. Você irá acrescentar código apenas no último arquivo. Na
hora da prova, leia atentamente as instruções, especialmente para onde copiar os arquivos
(desktop ou alguma outra pasta específica), como renomear, etc. E, o mais importante, se
guie pelo ENUNCIADO das questões. Os arquivos fornecidos tem apenas a finalidade de
ajudar a testar as soluções. É sua a responsabilidade de ler e seguir as instruções da prova.
O formato da prova pode ter diferenças em relação ao do exercício proposto.

Você está recebendo 6 arquivos:


• Resultado.h : definição do tipo estruturado Resultado (usado na prova)
• Candidato.h : interface do TAD Candidato
• Candidato.c : implementacao do TAD Candidato
• Programa.c : programa que usa as funções do aluno (teste)
• Solucao.h : cabecalho das funções a serem implementadas pelo aluno
• TURMA_MATRICULA_SOLUCAO.c (sua parte – deve ser renomeado
:SOMENTE ESSE ARQUIVO DEVE SER ALTERADO POR VOCÊ).

Primeiro você deve copiar todos esses arquivos para uma nova pasta. Renomeie o arquivo
TURMA_MATRICULA_SOLUCAO.c, substituindo TURMA pela sua turma (33E ou
33G) e MATRICULA pela sua matricula. Em seguida, abra o visualC e crie um novo
projeto. Adicione cada um dos 6 arquivos (os de extensão .h em Header Files e os de
extensão .c em Source Files) – na opção ADD , selecione add Existing Item, ao invés de
add new Item . Compile o projeto. Execute-o.

Agora leia o enunciado:


Exercício:
Considere a existência de um cadastro dos candidatos de um concurso. Para isso é utilizado
um vetor de ponteiros para o TAD Candidato.

A interface do TAD Candidato encontra-se no arquivo Candidato.h, cujo conteúdo aparece


descrito a seguir.

/* candidato.h */

typedef struct candidato Candidato;

/* cand_cria(): recebe o nome (uma cadeia de char), a identidade (um inteiro) e o resultado
de uma candidato (uma estrutura do tipo Resultado ) , cria um novo candidato com essas
informações e retorna um ponteiro para o novo candidato */
Candidato * cand_cria ( char *nome, int ident, Resultado r);

/* cand_libera(): recebe um ponteiro para um candidato e libera a memória */


void cand_libera(Candidato *c);

1
/* cand_obtem_nome(): recebe um ponteiro para um candidato e retorna o nome do
candidato. O nome do candidato é representado como uma cadeia de caracteres */
char *cand_obtem_nome (Candidato *c);

/* cand_obtem_ ident ():recebe um ponteiro para um candidato e retorna a identidade do


candidato. */
int cand_obtem_ident (Candidato *c);

/* cand_obtem_ result (): recebe um ponteiro para um candidato e retorna o resultado desse
candidato. O resultado retornado é do tipo Resultado */
Resultado cand_obtem_result(Candidato *c);

/* cand_ altera_result (): recebe um ponteiro para um candidato e um resultado, alterando


o resultado do candidato. */
void cand_altera_ result (Candidato *c, Resultado r);

Você deve escrever as seguintes funções:


• verifica_aprovado(): que recebe um resultado e retorna 1, se esse resultado significa
estar aprovado ou 0, caso contrario. Um resultado é composto por nota da parte escrita e
nota da parte oral. Um resultado significa estar aprovado se a soma da parte escrita com
a parte oral é maior que 80 e a parte escrita é maior que 45. Caso contrario, ele implica
reprovação.
PROTOTIPO: int verifica_aprovado(Resultado r);

• preenche_vetor_de_candidatos(): que recebe um número x de candidatos e um vetor de


ponteiros para o TAD Candidato e preenche as x primeiras posições, criando x
candidatos (antes de criar cada candidato, leia seus dados do teclado).
PROTOTIPO: void preenche_vetor_de_candidatos(int n, Candidato **v);

• exibe_vetor_de_candidatos(): que recebe o número de candidatos e o vetor de ponteiros


para o TAD Candidato, exibindo o nome, a identidade, e o resultado de cada candidato.
PROTOTIPO: void exibe_vetor_de_candidatos (int n, Candidato **v);

• exibe_aprovados(): que recebe o número de candidatos e o vetor de ponteiros para o


TAD Candidato, exibindo o nome, a identidade, e o resultado de todos os candidatos
aprovados. Deve ser utilizada a função verifica_aprovado() desenvolvida por você.
PROTOTIPO: void exibe_ aprovados (int n, Candidato **v);

Algumas considerações:
A estrutura interna do TAD Candidato (como é a struct ) está escondida (em
Candidato.c) – você não pode acessar diretamente os campos.
Mas a estrutura interna da estrutura Resultado não está escondida (está exposta em
Resultado.h ).

2
E não se preocupe com as linhas comentadas do Resultado.h. Esses comandos são
apenas para evitar que ao se incluir o arquivo várias vezes ter a struct resultado redefinida,
o que implicaria erro.

Você também pode gostar