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

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

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

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 23/06/2010

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

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

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

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

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

INF 1620 P2-14/10/05 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 P4 07/12/2010

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

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

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

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

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

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

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

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

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

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

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

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

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

INF 1620 P1-14/04/07 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 P2-01/11/03 Questão 1 Nome:

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

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

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

Aluno: Matrícula: Turma:

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

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

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

Estrutura de um programa em linguagem C

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

Estruturas de Dados Aula 6: Cadeias de Caracteres

Introdução a Computação

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

INF 1007 Simulado P2 Nome: Instruções

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

Introdução a Computação

LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO

Introdução a Programação de Jogos

Módulo 7 Cadeias de Caracteres

Aula teórica: /6. Enunciado

Programação II. Arquivos - Conceito. Arquivos

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

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

CCO 016 Fundamentos de Programação

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Programação de Computadores II

Caracteres e Cadeias de Caracteres

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

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

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

Sub-rotinas David Déharbe

Introdução à Programação

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Algoritmos e Estruturas de Dados I (DCC/003) Funções

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

3ra. Avaliação - Grupo A

Ponteiros e Alocação de Memória

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

Programação II. Files Read & Write. Bruno Feijó Dept. de Informática, PUC-Rio

A modularização é uma técnica de programação usada para dividir um programa em partes menores, organizando-as de acordo com suas funcionalidades.

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

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:

3. Linguagem de Programação C

Algoritmos RESUMO - LINGUAGEM C

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

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

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

INF 1005 Programação I

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros.

INF 1007 Programação II

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

Tabela ASCII de caracteres de controle

Fundamentos de Programação 1

Verificando corretude da triangulação

Arquivos. INF1005 Programação I Profa. Simone D.J. Barbosa sala 410 RDC

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

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

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

Material sobre Funções AEDS 1

Curso de C para Engenharias

INF 1005 Programação I

Departamento de Informática - PUC-Rio INF 1005 Programação 1 P1 26/04/2010

Capítulo 06: Arquivos

TÉCNICAS DE PROGRAMAÇÃO

Aula 16: Manipulação de Arquivos em C

Mestrado em Engenharia Física Tecnológica

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

Alocação Dinâmica de Memória - Exercício

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

Transcrição:

P2 Programação II 2012.2 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 Q1 3.0 Q2 3.0 Q3 2.5 Q4 1.5 Total 10.0 ATENÇÃO: TENHA EM MENTE QUE AS QUATRO QUESTÕES DE SUA PROVA COMPÕEM UM PROGRAMA COM MAIS DE UM MÓDULO, ONDE CADA MÓDULO CORRESPONDE A UM ARQUIVO. Q1. (3.0 pts). Considere que os imóveis de uma imobiliária são cadastrados com 4 informações: código de referência, tipo, ano de construção e bairro. Por exemplo: {101,"apt",1950,"leblon"} e {110,"casa",1950, "botafogo"}. Criando os arquivos necessários (módulos), defina um TAD Imovel com 4 campos (codigo, tipo, ano, bairro) e 5 funções (im_cria, im_obtemcodigo, im_obtemtipo, im_obtemano, im_obtembairro), onde: im_cria recebe as 4 informações de um imóvel como parâmetros e retorna um ponteiro para Imovel cujo espaço na memória foi alocado dinamicamente e cujos campos foram devidamente preenchidos. Não esqueça que ao escrever um TAD é necessário prover uma INTERFACE e uma IMPLEMENTAÇÃO. Crie os módulos (arquivos) que julgar necessário. Indique claramente os nomes dos arquivos (módulos) que você criar, colocando o nome do arquivo como comentário na primeira linha do arquivo. Indique claramente os "includes" que são indispensáveis ("includes" desnecessários causam perdas de pontos na nota). Q1 1

NAS QUESTÕES 2 E 3, VOCÊ ESTARÁ IMPLEMENTANDO FUNÇÕES COM A FINALIDADE DE MANIPULAR UM VETOR DE IMOVEL. LEMBRE-SE QUE UM MÓDULO DEVE CONTER FUNÇÕES AGREGADAS POR UMA FINALIDADE COMUM. CUIDADO PARA NÃO MISTURAR O TAD DA QUESTÃO 1 COM OUTRO(S) MÓDULO(S). CRIE O(S) MÓDULO(S) QUE JULGAR NECESSÁRIO(S). COLOQUE O NOME DO ARQUIVO COMO COMENTÁRIO NA PRIMEIRA LINHA DO(S) ARQUIVO(S). Q2 (3.0 pts). Usando um dos métodos de ordenação vistos em sala, o algoritmo BOLHA e o algoritmo ordenação rápida (QUICK SORT), escreva a função RECURSIVA de ordenação vetorimoveis_ordena que recebe um vetor de ponteiros para TAD Imovel e o tamanho deste vetor, e ordena este vetor em ordem ALFABÉTICA de tipo e em ordem DECRESCENTE de ano. Esta função retorna void. Você NÃO pode usar a função qsort da biblioteca do C. Indique claramente os "includes" necessários ("includes" a mais ou a menos causam perdas de pontos na nota). Q3 (2.5 pts). Usando busca binária, escreva a função de busca vetorimoveis_busca que recebe um vetor de ponteiros para TAD Imovel ordenado conforme a Questão 2, o tamanho deste vetor, um tipo e um ano e retorna um índice do vetor que contenha este tipo e ano. Esta função deve retornar -1 quando não encontrar o tipo e o ano pedidos. Também devem ser indicados claramente os "includes" necessários ("includes" a mais ou a menos causam perdas de pontos na nota). Q2 2

Q3 3

Q4 (1.5 pt). Complete (nas áreas sombreadas) o programa principal a seguir que deve alocar dinamicamente memória para um vetor de ponteiros para Imovel e usar as funções de ordenação e busca das Questões 2 e 3. Você deve incluir todas as interfaces que achar necessárias e adequadas (coloque comentários indicando as razões para tal inclusão, como no exemplo do stdio.h). Apenas comandos "includes" devem constar antes da linha "int main(void)". "includes" desnecessários causam perdas de pontos na nota. Também declare variáveis necessárias, complete chamadas de função, etc. /* arquivo principal.c */ #include <stdio.h> /* por causa da printf */ int main(void) { } int i, n = 5; v[0] = im_cria(101,"apt",1990,"leblon"); v[1] = im_cria(120,"casa",1990,"botafogo"); v[2] = im_cria(110,"apt",2000,"meier"); v[3] = im_cria(105,"casa",2000,"meier"); v[4] = im_cria(130,"apt",2000,"leblon"); vetorimoveis_ordena( printf("entre tipo e ano: "); scanf("%s %d",&tipo,&ano); i = vetorimoveis_busca( if printf("nao ha' este tipo de imovel\n"); else printf("bairro: %s\n", return 0; 4

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* strcat (char* destino, char* fonte); char* strdup (char* s); 5