P2 Programação II Departamento de Informática/PUC-Rio

Documentos relacionados
Aluno: Para todas as questões desta prova considere os tipos estruturados abaixo:

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

P2 Programação II Departamento de Informática/PUC-Rio

P3 Programação II Departamento de Informática/PUC-Rio 27 de junho de 2013

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

INF 1620 P4-01/07/08 Questão 1 Nome:

INF 1620 P3-21/06/08 Questão 1 Nome:

INF 1007 P2 23/10/10 Nome: Instruções:

INF 1620 P2-14/10/05 Questão 1 Nome:

INF 1620 P1-16/09/06 Questão 1 Nome:

INF 1620 P2-17/05/08 Questão 1 Nome:

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P4 30/06/07 Questão 1 Nome:

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

INF 1620 P3-27/11/04 Questão 1 Nome:

INF 1620 P4 11/12/06 Questão 1 Nome:

INF 1620 P2-23/10/04 Questão 1 Nome:

INF 1620 P3-29/06/04 Questão 1 Nome:

SIMULADO PROVA. Questões Nota Revisão 1 (2.0) 2 (1.0) 3 (2.0) 4 (2.0) 5 (2.0) P1 (9,0)

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

INF 1620 P1-14/04/07 Questão 1 Nome:

INF 1620 P3-06/12/03 Questão 1 Nome:

INF 1620 P1-11/04/08 Questão 1 Nome:

INF 1620 P1-18/09/04 Questão 1 Nome:

INF 1620 P1-17/09/05 Questão 1 Nome:

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

INF P3-23/06/07 Questão 1 Nome:

INF 1620 P4-09/07/03 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome:

PROVA P2 INF /10/2014 Programação II

INF 1620 P4-27/06/02 Questão 1 Nome:

INF 1620 P1-04/10/03 Questão 1 Nome:

INF 1620 P4-06/12/02 Questão 1 Nome:

INF 1620 P3-02/07/02 Questão 1 Nome:

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Aluno: Matrícula: Turma:

INF 1007 Simulado P2 Nome: Instruções

INF 1620 P4-13/12/01 Questão 1 Nome:

Apêndice B. Cadeias de Caracteres (Strings)

Aula teórica: /6. Enunciado

Programação II. Arquivos - Conceito. Arquivos

Fundamentos de Programação 1

Linguagem de Programação

Tipos Abstratos de Dados

Programação de Computadores II. Cap. 16 Ordenação

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

MAC-115 Introdução à Computação para Ciências Exatas e Tecnologia IO Terceiro Exercício-Programa Entregar até 09/11/2007

Módulo 16 - Ordenação

EPs 1 e 2. EP2: veja. EP1: veja

Computação 2. Aula 8. Profª. Fabiany Arquivos

Aula 26: Arquivos de texto

LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO

Programação de Computadores II

Caracteres e Cadeias de Caracteres

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

Estrutura de um programa em linguagem C

BCC202 - Estrutura de Dados I

TÉCNICAS DE PROGRAMAÇÃO

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Módulo 7 Cadeias de Caracteres

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Terceira Prova 20 de junho de 2011

Mestrado em Engenharia Física Tecnológica

Linguagem C: Ordenação

Programação Dicas e Outras Coisas

Introdução a Programação. Manipulando Arquivos em Modo Texto

Introdução a Programação de Jogos

Curso de C para Engenharias

Capítulo 6: Arquivos

INF1001: Introdução à Ciência da Computação P2 25/05/08 Nome:

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Linguagem C: Arquivo-Texto

TAD: Tipo Abstrato de Dados (parte 2)

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de Caracteres

Manipulação de Arquivos. Técnicas de Programação

Introdução a Computação

Métodos Computacionais. Arquivos

Programação de Computadores

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 12 Estruturas

Aula 25: Alocação Dinâmica

Aula 16: Manipulação de Arquivos em C

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio

Módulo 16 - Ordenação. Referências

INF 1007 Programação II

Aula 1 Conceitos Básicos

INF1001: Introdução à Ciência da Computação P4 30/06/08 Nome:

Introdução a Computação

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Curso de Programação C em Ambientes Linux Aula 05

Computação 2. Aula 9. Diego Addan Arquivos

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos.

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

Módulo 18 - Tabelas de Dispersão. Referências

Capítulo 06: Arquivos

Linguagem C Ficheiros Compilação Separada

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Transcrição:

P2 Programação II 2013.1 Departamento de Informática/PUC-Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente resolvida nas folhas que constam deste caderno, utilizando-se frente e/ou verso; 3. A prova pode ser feita utilizando-se lápis ou caneta (azul ou preta); 4. Dispositivos eletrônicos (celulares, tablets, ) devem ser desligados. 5. Cada questão deve ser resolvida espaço destinado a ela e no verso, quando necessário. Valor Nota Q1A 2.0 Q1B 2.0 Q2 3.0 Q3 3.0 Total 10.0 Considere um TAD denominado ObraLiteraria que se refere à seguinte estrutura contendo dados e características de uma obra de literatura usada por uma livraria para organizar o seu acervo: /*Abaixo a definição da struct obraliteraria que faz parte da implementação do TAD */ struct obraliteraria { char tipo[10]; /* poesia, teatro,... */ char autor[30]; char titulo[50]; int ano; }; As funções exportadas por este TAD (na interface do TAD), são as seguintes: i. A função obracria que recebe os argumentos tipo de obra, autor, título da obra, ano de publicação, cria uma obra literária com esses dados e retorna um ponteiro para essa nova ObraLiteraria. ii. iii. Quatro funções de obtenção dos dados armazenados em um TAD ObraLiteraria (denominadas obraobtemtipo, obraobtemautor, obraobtemtitulo, e obraobtemano) que recebem um ponteiro para ObraLiteraria e retornam o valor em questão (e.g. obraobtemtitulo retorna (o ponteiro para ) a cadeia com tipo de um TAD ObraLiteraria recebido, assim como obraobtemano retorna o ano de um TAD ObraLiteraria recebido ). Uma sexta função, denominada obraverificanomodernismo2 que recebe um ponteiro para ObraLiteraria e verifica se essa obra literária pertence ao segundo período do modernismo brasileiro (1930 a 1945). Esta função retorna -1 se o ano da obra for anterior a 1930, retorna 0 se for no período 1930 a 1945, e retorna 1 se o ano for posterior a 1945. [Questão 1] ATENÇÃO: Nos itens da questão 1 solicitados abaixo, o seu papel é o do IMPLEMENTADOR do TAD, ou seja, de quem desenvolveu e disponibilizou o TAD ObraLiteraria. 1

[1a] Escreva o conteúdo do arquivo.h com a interface deste TAD ObraLiteraria. Coloque como comentário o nome do arquivo e nele apresente a interface completa, isto é, o typedef e todas as funções disponíveis para o usuário. 2

[1b] Complemente o TAD ObraLiteraria, escrevendo o módulo (o arquivo.c ) que implementa as funções deste TAD. Coloque como comentário o nome do arquivo e, para simplificar sua resposta, não precisa apresentar a obracria (que seria necessária, obviamente). Somente apresente a definição da struct e a implementação das funções obraobtemtipo, obraobtemautor, obraobtemtitulo, obraobtemano e a obraverificanomodernismo2. Coloque os comandos #include estritamente necessários. 3

ATENÇÃO: Nas questões 2 e 3 abaixo, o seu papel é o do USUÁRIO do TAD, ou seja, de quem apenas utiliza o TAD ObraLiteraria. Considere, agora, que o controle do acervo desta livraria é mantido utilizando-se um vetor v de ponteiros para ObraLiteraria e uma variável inteira n que armazena o número de obras literárias desse acervo. [Questão 2] Usando o TAD ObraLiteraria, escreva a função ordenaobras que ordena o vetor v em ordem crescente por nome de autor, depois por tipo de obra e finalmente por ano de publicação. Use obrigatoriamente o algoritmo de quick sort. A função recebe um vetor de ponteiros para ObraLiteraria e o número de obras. Para fazer a sua função ordenaobras você deve obrigatoriamente usar uma função auxiliar de comparação, para comparar duas obras literárias de acordo com o critério descrito, que deve ser criada em separado por você e estar na prova. Se quiser, você pode usar o qsort da biblioteca C na função ordenaobra. Caso você não saiba implementar o quicksort ou usar a qsort, implemente o bolha (valerá metade da questão), mas mesmo assim tem que apresentar e usar a função separada de comparação. 4

[Questão 3] Usando o TAD ObraLiteraria, escreva a função de busca binária buscabinobramoderno2 que recebe um vetor de ponteiros para ObraLiteraria, o número de obras, um nome de autor e um tipo de obra, e retorna um ponteiro para a obra literária mais recente do autor, do tipo indicado, no segundo período do modernismo brasileiro. Considere que o vetor está ordenado conforme o critério descrito na questão [2]. Por exemplo, para um vetor com ponteiros para as seguintes estruturas: {"poesia","cecilia Meireles","Poemas Escritos na India",1962} {"poesia","vinicius de Morais","Ariana, a Mulher",1936} {"poesia","vinicius de Morais","Novos Poemas",1938} {"teatro","vinicius de Morais","Orfeu da Conceição",1954} a função buscabinobramoderno2 retorna, com os argumentos autor= "Vinicius de Morais" e tipo= "poesia", um ponteiro para {"poesia","vinicius de Morais","Novos Poemas",1938}. Nesta questão, você deve tomar cuidado com as repetições (e.g., no exemplo acima, há duas poesias de Vinicius no período 1930-1945, e a função retorna o ponteiro para a primeira). Caso nenhuma obra atendendo à descrição seja encontrada, a função retorna NULL. Também crie em separado e use obrigatoriamente uma função auxiliar de comparação. Não precisa escrever os comandos #include. 5

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,...); 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* strcat (char* destino, char* fonte); char* strdup (char* s); stdlib.h: void qsort (void *v, int n, int tam, int (*cmp)(const void*, const void*)); void* malloc (int nbytes); void free (void* p); 6