Вы находитесь на странице: 1из 3

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

2010/2

AVISO IMPORTANTE:

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.

guie pelo ENUNCIADO das questões. Os arquivos fornecidos tem apenas a finalidade de

E, o mais importante, se

estou enviando apenas um exercício para que seja montado um

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);

/* 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 ).

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.