Buscar

P3-2014-Um_Alunos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

P3 Programação II 2014.1 Departamento de Informática /PUC-Rio
Valor
Nota
Q1
3.5
Q2A
1.5
Q2B
1.5
Q3
3.5
Total
10.0
Aluno: _______________________________________________________
Matrícula: _______________										Turma: _______
A prova é individual, sem consulta a material ou a professores, e sem perguntas sobre o enunciado. A interpretação do enunciado faz parte da prova. O aluno sempre tem a garantia de que erros graves de enunciado anulam a questão.
A prova pode ser feita utilizando-se lápis ou caneta (somente azul ou preta);
Dispositivos eletrônicos (celulares, tablets, …) devem ser desligados e guardados.
O aluno só pode manter junto a si lápis, borracha, e caneta. O empréstimo deste tipo de material para outro aluno é estritamente proibido. Todo papel diferente do distribuído pelo fiscal (independentemente do conteúdo) e/ou qualquer dispositivo eletrônico (celular, tablet, etc) (ligado ou não) encontrados junto ao aluno implicará no recolhimento imediato da prova e a atribuição de nota ZERO à mesma.
Códigos devem ser escritos na linguagem C.
Resolva as questões nos espaços reservados para tal (se continuar no verso, indique claramente a região correta para não ser confundida com rascunho).
Algumas Funções de Bibliotecas (VOCÊ PODE USAR ESTAS FUNÇÕES EM QUALQUER QUESTÃO DESTA PROVA)
stdio.h:
int scanf (char* formato, ...);
int printf (char* formato, ...);
FILE* fopen (char* nome, char* modo);
int fclose (FILE* fp);
int fscanf (FILE* fp, char* formato, ...);
int fprintf (FILE* fp, char* formato, ...);
char*fgets(char* str, int size, FILE* fp);
int sscanf(char* str, char* formato, ...);
stdlib.h:
void* malloc (int nbytes);
void free (void* p);
math.h:
double sqrt (double x);
double pow (double x, double exp);
double cos (double radianos);
double sin (double radianos);
string.h:
int strlen (char* s);
int strcmp (char* s, char *t);
char* strcpy (char* destino, char* fonte);
char* strncpy (char* destino, char* fonte, int n);
char* strcat (char* destino, char* fonte);
char* strdup (char* s);
QUESTÃO 1
Projete um TAD onde você cria um novo tipo de dados chamado Fracao que é um ponteiro para um tipo estruturado definido por 3 (três) componentes: o numerador (como um número natural), o denominador (como um número natural maior do que zero) e o sinal (0 se positivo e 1 se negativo), isto é: typedef struct fracao * Fracao;. Implemente as funções deste TAD que sejam suficientes para um programador externo escrever um programa no módulo meuPrograma.c que implementa e testa a seguinte função:
int fraEhMaior(Fracao p, Fracao q)
que verifica se uma fração p é maior do que a fração q. Teste para e . No final dos testes libere as frações. Apresente o TAD e o seu uso nos espaços abaixo, colocando o nome dos módulos no local sublinhado e usando todos os #includes necessários. A função fraCria pode receber quaisquer dois números inteiros, por exemplo: fraCria(6,-9) e fraCria(-6,9) representam e fraCria(-2,-4) representa . Note que para comparar duas frações basta comparar os números reais que correspondem a elas.
 Módulo Interface do TAD: _________________________
Módulo de implementação do TAD: _________________________
Módulo usuário do TAD: _________________________
QUESTÃO 2
2A) Defina a estrutura pilha para uma pilha de cadeia de caracteres implementada como lista, onde a estrutura contém um ponteiro para o topo da pilha. Também escreva a função pilha_push, considerando que as cadeias de caracteres são alocadas dinamicamente. Não precisa apresentar #include nem testes de falha de alocação dinâmica.
Solução da Questão 2A:
2B) Apresente a 2A implementada como vetor, onde a nova estrutura pilha contém a quantidade de elementos na pilha e o vetor com os elementos. Continue considerando que as cadeias de caracteres são alocadas dinamicamente. Não precisa apresentar #include nem testes de falha de alocação dinâmica. 
Solução da Questão 2B:
QUESTÃO 3
Fig.1
Numa árvore binária de números inteiros definida por:
struct noArv
{
 int info;
 struct noArv * esq;
 struct noArv * dir;
};
typedef struct noArv NoArv;
considere todos os caminhos possíveis da raiz até às folhas. Escreva a função int temCaminho(NoArv * a, int soma) que verifica se há um destes caminhos cuja soma de seus elementos seja igual a soma. Por exemplo, na árvore da Fig. 1, a função retorna verdade para soma = 27, porque há um caminho que soma 27 (5 – 10 – 8 – 4), mas retorna falso para soma = 23 (pois não há caminho completo que some 23).
Solução da Questão 3:
5 de 5

Continue navegando